C# mit einer SQL Datenbank verbinden

C# mit SQL Datenbank verbinden

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.

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.

Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.
Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.