Was ist C#?
Bei C# (gesprochen: C Sharp) handelt es sich um eine objektorientierte Programmiersprache, die im Auftrag von Microsoft entwickelt wurde. In den weitaus
meisten Fällen wird sie als Visual C# im Zusammenhang mit dem .NET Framework von Microsoft genutzt. In der Sprache C# können aber auch Anwendungen für
Linux, macOS und Android erstellt werden, unter anderem dank des ursprünglich unabhängigen Mono-Frameworks, das zwischenzeitlich von der Microsoft-Tochter
Xamarin übernommen wurde.
Die erste Version der Sprache C# erscheint im Jahre 2001. Sie hat eine ähnliche Zielsetzung wie Java und C++ und wird ständig weiterentwickelt. Seit März
2017 gibt es die Sprache C# in der Version 7.0. Mithilfe der Entwicklungsumgebung Visual Studio, die es aktuell in der Version 2017 gibt, und des .NET
Frameworks können Sie in mehreren Sprachen programmieren, unter anderem in Visual C#. Das .NET Framework bietet Klassenbibliotheken, Programmierschnittstellen
und Dienstprogramme zur Entwicklung von Anwendungen. Außerdem wird eine Laufzeitumgebung zur Ausführung der Anwendungen zur Verfügung gestellt.
Sie können die frei verfügbare Community-Version der Entwicklungsumgebung Visual Studio 2017 nutzen. Sie lässt sich bei Microsoft
über die Adresse www.visualstudio.com/de/vs herunterladen und auf Ihrem Windows-PC installieren. Die Entwicklungsumgebung umfasst
einen Editor zur Erstellung des Programmcodes, einen Compiler zur Erstellung der ausführbaren Programme, einen Debugger zur
Fehlersuche und vieles mehr.
Was mache ich mit Visual C#?
Mit Visual C# und dem Visual Studio lassen sich Anwendungen unterschiedlichen Typs erstellen, unter anderem:
- Klassische Windows-Forms-Anwendungen mit einfach zu erstellenden grafischen Benutzeroberflächen und ereignisorientierter Programmierung.
- Moderne WPF-Anwendungen mit XAML. Dabei werden die Klassenbibliothek Windows Presentation Foundation (WPF), die im Jahre 2006 eingeführt wurde und die Auszeichnungssprache eXtensible Application Markup Language (XAML) genutzt.
- Datenbankanwendungen mit lesendem und schreibendem Zugriff auf viele unterschiedliche Datenbanksysteme. Für den Zugriff auf relationale Datenbanken kann man mit dem ADO.NET-Framework als Teil des .NET-Frameworks arbeiten.
- Dynamische Internetanwendungen, bei denen die Webseiten als interaktive Benutzeroberflächen dienen. Dabei wird das ASP.NET-Framework als Teil des .NET-Frameworks genutzt. ASP steht für Active Server Pages.
Ein Beispielprogramm
In diesem Abschnitt folgt ein Beispiel für eine Datenbankanwendung mit Visual C#. Falls Sie noch keine Programmiererfahrung haben, soll dieses Beispiel Ihnen einen typischen Einsatzzweck verdeutlichen, siehe Abbildung 1:
- Das Erstellen einer Datenbank,
- das Ermitteln und Ausgeben von Informationen aus dieser Datenbank und
- das Ändern von Daten in dieser Datenbank.
Als Datenbanksystem wird das frei verfügbare SQLite genutzt. Es ist unkompliziert, arbeitet mit einfachen Dateien, aber nach dem SQL-Standard. Es
erfordert keine zusätzliche Installation eines Datenbankservers. Im genannten Beispiel wird eine Datenbank mit Standarddaten erstellt, falls noch
keine vorhanden sein sollte.
Falls Sie bereits Kenntnisse in einer anderen Programmiersprache besitzen, finden Sie im Code und den kurzen Kommentaren viele
bekannte Elemente, aber auch viele Elemente, die für Visual C# spezifisch sind. Natürlich ist dieses Demo-Beispiel noch nicht zum
gründlichen Erlernen von Visual C# geeignet. An dieser Stelle verweise ich auf mein
Buch beim Rheinwerk-Verlag.
Abbildung 1: Datenbankanwendung mit Visual C# und SQLite
Aufbau der Datenbank
Es wird mit einer SQLite-Datenbank gearbeitet, die eine einzelne Tabelle umfasst. Die Struktur der Tabelle sehen Sie in Tabelle 1, die Beispieldaten in Tabelle 2.
Name |
Typ |
name |
TEXT |
vorname |
TEXT |
personalnummer |
INTEGER PRIMARY KEY |
gehalt |
REAL |
geburtstag |
TEXT |
Tabelle 1: Datenbank "firma.db", Tabelle "personen", Struktur
name |
vorname |
personalnummer |
gehalt |
geburtstag |
Mertens |
Julia |
2297 |
3621,5 |
30.12.1959 |
Maier |
Hans |
6714 |
3500 |
15.03.1962 |
Schmitz |
Peter |
81343 |
3750 |
12.04.1958 |
Tabelle 2: Datenbank "firma.db", Tabelle "personen", Standarddaten
Der Code des Programms
Es folgt der Programmcode in der Datei "Form1.cs":
using System;
// Namensraum mit Klassen der SQLite-Bibliothek verfügbar machen
using System.Data.SQLite;
using System.IO;
using System.Windows.Forms;
// Namensraum für dieses Visual-C#-Projekt
namespace DBZugriffSQLite
{
// Klasse für das Formular des Projekts
public partial class Form1 : Form
{
// Standardkonstruktor für die Formularklasse
public Form1()
{
InitializeComponent();
}
// Ereignis: Formular wird geladen
private void Form1_Load(object sender, EventArgs e)
{
// Falls die Datenbank bereits existiert: Ende
if (File.Exists("firma.db"))
return;
// Ab hier: Datenbank neu erzeugen
// Verbindungsobjekt erzeugen
SQLiteConnection con = new SQLiteConnection();
// Verweis auf Objekt für SQL-Befehl erzeugen
SQLiteCommand cmd;
string cmdBeginn;
// Verbindung zu Datenbank bereitstellen
con.ConnectionString = "Data Source=firma.db;";
// Objekt für SQL-Befehl bereitstellen
cmd = con.CreateCommand();
// Ausnahmebehandlung
try
{
// Verbindung öffnen
con.Open();
// SQL-Befehl zur Erzeugung der Tabelle mit fünf Feldern
cmd.CommandText = "CREATE TABLE personen (name TEXT, "
+ "vorname TEXT, personalnummer INTEGER PRIMARY KEY, "
+ "gehalt REAL, geburtstag TEXT)";
// SQL-Befehl absenden
cmd.ExecuteNonQuery();
// SQL-Befehl zur Erzeugung eines Datensatzes, Beginn
cmdBeginn = "INSERT INTO personen (name, vorname, "
+ "personalnummer, gehalt, geburtstag) VALUES ";
// SQL-Befehl für ersten Datensatz vervollständigen
cmd.CommandText = cmdBeginn
+ "('Maier', 'Hans', 6714, 3500, '15.03.1962')";
cmd.ExecuteNonQuery();
// ... für zweiten Datensatz
cmd.CommandText = cmdBeginn
+ "('Schmitz', 'Peter', 81343, 3750, '12.04.1958')";
cmd.ExecuteNonQuery();
// ... für dritten Datensatz
cmd.CommandText = cmdBeginn
+ "('Mertens', 'Julia', 2297, 3621.5, '30.12.1959')";
cmd.ExecuteNonQuery();
// Verbindung schließen
con.Close();
}
// Falls ein Fehler auftritt, zum Beispiel im SQL-Befehl
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// Ereignis: Benutzer hat Schaltfläche "Alle sehen" betätigt
private void CmdAlleSehen_Click(object sender, EventArgs e)
{
SQLiteConnection con = new SQLiteConnection();
SQLiteCommand cmd;
// Verweis auf Objekt für Ergebnis der Datenbankabfrage erzeugen
SQLiteDataReader reader;
con.ConnectionString = "Data Source=firma.db;";
cmd = con.CreateCommand();
// SQL-Befehl: Wähle alle Felder für alle Datensätze aus
cmd.CommandText = "SELECT * FROM personen";
try
{
con.Open();
// SQL-Befehl mit Datenbankabfrage senden, Ergebnis empfangen
reader = cmd.ExecuteReader();
// ListBox leeren
LstAnzeige.Items.Clear();
// Alle Datensätze des Ergebnisses durchlaufen
while (reader.Read())
{
// Zeige Inhalte der Felder für den aktuellen Datensatz an
LstAnzeige.Items.Add(reader["name"] + " # "
+ reader["vorname"] + " # "
+ reader["personalnummer"] + " # "
+ reader["gehalt"] + " # "
+ reader["geburtstag"]);
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// Ereignis: Eine der beiden Schaltflächen "Gehälter ..." wurde betätigt
private void CmdAendern_Click(object sender, EventArgs e)
{
SQLiteConnection con = new SQLiteConnection();
SQLiteCommand cmd;
int anzahl;
string op;
con.ConnectionString = "Data Source=firma.db;";
cmd = con.CreateCommand();
// Welche der beiden Schaltflächen wurde betätigt?
if (sender == CmdErhoehen) op = "*";
else op = "/";
// SQL-Befehl zum Ändern der Datensätze
cmd.CommandText = "UPDATE personen SET gehalt = gehalt "
+ op + " 1.05";
try
{
con.Open();
// SQL-Befehl senden, Anzahl der geänderten Datensätze empfangen
anzahl = cmd.ExecuteNonQuery();
// Anzahl anzeigen
MessageBox.Show("Datensätze geändert: " + anzahl);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Aktuelle IT Jobs
» Service Desk Agent (m/w/d) - Remote möglich» Informationssicherheitsbeauftragter (ISB) und Datenschutzkoordinator (m/w/d)» Web / App Entwickler:in» IT-Security Manager*in (w/m/d)» Senior Backend-Softwareentwickler C# (m/w/d)» alle Jobs anzeigen