In diesem Beitrag lernst du, wie du C# mit einer SQL Datenbank verbinden kannst.
Das Speichern und Abfragen von Daten aus bzw. in eine Datenbank ist ein essentieller Bestandteil der meisten Anwendungen, die du als Entwickler programmierst. In diesem Artikel erkläre ich dir, wie du C# mit SQL verbinden kannst um eine MySQL Datenbank zu verwenden.
In diesem Tutorial verwenden wir eine MySQL Datenbank. Dafür kannst du dir hier erstmal kostenlos den Microsoft SQL Server (Express Edition) herunterladen und installieren. Ohne einen aktiven SQL Server können wir natürlich keine Datenbank erstellen.
Der Code in diesem Beispiel bezieht sich auf eine fiktive Datenbank für eine Bibliothek. Der Quellcode soll dir nur als eine Vorlage für deine eigenen Projekte dienen.
Datenbankverbindung
Eine Datenbankverbindung (Connection-String) besteht aus drei Bestandteilen:
- Servername und Datenbankname
- Zugangsdaten (Username und Passwort)
- Optionale Parameter (zum Beispiel für Sicherheit)
Der Connection-String ist immer unterschiedlich. Um dein C# Programm mit deiner eigenen SQL Datenbank zu verbinden, musst du den Namen deines SQL Servers, der Datenbank und des Nutzers (inkl. Passwort) notieren/wissen.
Wenn du eine komplette Anwendung mit einer echten SQL Datenbank programmieren möchtest, dann schau dir unbedingt den C# Video-Intensivkurs an. Dort erstellen wir gemeinsam eine Software für einen Einzelhandel um Proukte zu verwalten (Produkte aus Datenbank lesen, schreiben, löschen usw.). Klicke hier und starte jetzt mit dem Kurs um zu lernen, wie du SQL richtig mit C# verwendest.
C# und SQL Queries
Die Standardprozeduren, die man im Normalfall braucht sind das Lesen von Daten und das Modifizieren von Daten (Erstellen, Updaten und Löschen).
Um Abfragen (engl. Queries) von C# an eine SQL Datenbank zu erstellen, verwenden wir die Klasse SqlCommand aus dem System.Data.SqlClient Namespace. Vorher erstellen wir aber erstmal eine Verbindung zur Datenbank, dafür legen wir einen Connection-String an.
Wichtig: Die Daten für deinen Connection-String bekommst du von deinem SQL Server. Für dieses Tutorial solltest du also den SQL Server installiert und eine Datenbank im SQL Server erstellt haben.
private void Connect(){
string connectionString = @"Data Source=MyServerName;Initial Catalog=MyDbName; User ID=Admin; Password=Root";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
// Hier Inhalte lesen/schreiben
connection.Close();
}
Mit der Klasse SqlConnection können wir eine Verbindung (mit Hilfe eines Connection-Strings) zu einer bestehenden SQL Datenbank aufbauen. Mit der Open() und Close() Methode können wir die Verbindung dann öffnen und schließen. Es können nur Daten gelesen und geschrieben werden, so lange die Verbindung geöffnet ist. Außerdem solltest du nie vergessen die Verbindung zur Datenbank zu schließen, nachdem du deine Queries (Abfragen) ausgeführt hast!
Daten lesen mit SqlDataReader
Nachdem du die Verbindung mit Open() geöffnet hast, kannst du ein SqlCommand mit einem SQL-Query erstellen und dieses dann mit einer Instanz der SqlDataReader Klasse ausführen:
private void Connect(){
string connectionString = @"Data Source=MyServerName;Initial Catalog=BookDb; User ID=Admin; Password=Root";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
// Hier Inhalte lesen
string sql = "Select BookID, BookName, BookCategory from Books";
SqlCommand cmd = new SqlCommand(sql, connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read()){
string rowResult = string.Format("BookId: {0}, Book Name: {1}, Book Category: {2}",
reader.GetValue(0), reader.GetValue(1), reader.GetValue(2));
Console.WriteLine(rowResult);
}
// Alle Datenbank zugehörigen Objekte schließen
reader.Close();
cmd.Dispose();
connection.Close();
}
Unser SqlDataReader liest nun jedes Buch aus der Tabelle Books und gibt es Reihe für Reihe in die Konsole aus.
Daten schreiben mit SqlDataAdapter
Dieses mal ändern wir das Beispiel so ab, dass wir Daten zur SQL Datenbank hinzufügen anstatt Inhalte zu lesen. Dafür verwenden wir den SqlDataAdapter (vorher haben wir den SqlDataReader verwendet).
private void Connect(){
string connectionString = @"Data Source=MyServerName;Initial Catalog=BookDb; User ID=Admin; Password=Root";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
string sql = "Insert into Books (BookId, BookName, BookCategory) values (1, '"+"Romeo und Julia"+"', '"+"Roman"+"')";
SqlCommand cmd = new SqlCommand(sql, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.InsertCommand = new SqlCommand(sql,cnn); // Insert (erstellen/einfügen) Command erstellen
adapter.InsertCommand.ExecuteNonQuery(); // Command ausführen
// adapter.DeleteCommand
// adapter.UpdateCommand
// Alle Datenbank zugehörigen Objekte schließen
reader.Close();
cmd.Dispose();
connection.Close();
}
Der Adapter wird im Beispiel ein neues Buch erstellen. Du kannst bestehende Elemente verändern mit UpdateCommand oder Elemente löschen mit DeleteCommand.
Zusammenfassung
Nachdem du deinen Connection-String erstellt hast, bauen wir eine Verbindung zur Datenbank mit der SqlConnection Klasse auf. Danach öffnen wir die Verbindung und Lesen (SqlDataReader) oder Schreiben (SqlDataAdapter) in die Datenbank. Nachdem ausführen des Queries/Commands schließen wir alle offenen Verbindungen und entfernen alle Objekte die im Zusammenhang mit der Datenbank stehen.
Du solltest jetzt ein grobes Verständnis für den Zugriff von C# auf eine SQL Datenbank haben.