HowTo: Datenbankverbindungen – .NET & MySQL
In diesem HowTo ging es um die Datenverbindung zwischen .NET und MS SQL. Natürlich bietet .NET von Haus aus einen MS SQL Provider, aber wie sieht es mit MySQL aus? Wie kann man mit .NET auf eine MySQL Datenbank zugreifen?
Daher geht es um dieses Thema:
Heute: .NET und MySQL
Das Testprojekt wird ähnlich wie das MS SQL Beispiel sein.
- Benötigte Software:
Die Datenbank Software MySQL – aus Einfachheitsgründen nehmen wir einfach ein vorgefertigtes Paket, welches unter PHP Entwicklern wohl bekannt ist: XAMPP – Apache, PHP, MySQL etc. im Bundel. Wer bereits einen MySQL Server hat braucht das natürlich nicht.
Um mit .NET darauf zuzugreifen benötigen wir noch den MySQL Daten Provider – MySQL Connector .NET 5.0.
(und natürlich VS – siehe erstes HowTo).
- Test Datenbank erstellen (MySQL mit XAMPP)
Sobald XAMPP erfolgreich auf dem System installiert wurde, öffnet man das Control Panel und startet den Apachen sowie den MySQL Server.
Bei Vista (und wahrscheinlich auch bei XP SP2) meckert die Firewall – die beiden Sachen nicht blocken.
Unter der Webadresse http://localhost/xampp/index.php findet man nun das Administrationspanel. Im Menü auf der linken Seite befindet sich der für uns wichtigste Punkt:
Über phpMyAdmin legen wir unser Datenbank an (“dotnet“) und dann unsere Tabelle “test“Â mit Spalte “id” als “autoincrement int” und “value” als “varchar” für unseren Text.
Danach auf “Speichern” und fertig ist unser DB.
Wichtig: Den MySQL Server die ganze Zeit über anlassen – den brauchen wir bis zuletzt
- MySQL Connector installieren
Damit wir einen MySQL Datenprovider bekommen, müssen wir nun den Connector installieren.
- Konsolenprogramm erstellen
In unserem Konsolenprogramm fügen wir nun noch die Referenz zu der MySQL.Data DLL hinzu, sodass wir den Namespace später verwenden können:
Unter dem Punkt “MySQL.Data” finden wir dann unseren Connector:
Dadurch steht uns jetzt die Namespaces MySql.Data & MySql.Data.MySqlClient zur verfügen welche wir einbinden:
using MySql.Data; using MySql.Data.MySqlClient;
Teil 1: DB Verbindung öffnen
Der Namespace MySqlClient enthält alles was wir generell brauchen und ist ähnlich sturkturiert wie SqlClient für MS SQL. Anstatt einer SqlConnection Klasse gibt es halt eine MySqlConnection Klasse.
MySqlConnection connection = new MySqlConnection(@"Server=127.0.0.1;Uid=root;Pwd=;Database=dotnet;"); connection.Open();
Wichtig: Der Connectionsstring ist etwas anders – MySQL stellt allerdings ein kleines Tutorial bereit, sowie bei speziellen Fragen auch ein Forum.
Achtung: DB Verbindung wird am Ende unseres Beispieles wieder geschlossen.
Teil 2: Werte in die DB schreiben
Hier sieht man ebenfalls die Anlehnung an die SqlCommand Klasse – es gibt eine MySqlCommand Klasse, welche alle (bzw. die “wichtigsten”) Methoden ebenso enthält:
MySqlCommand insertCommand = new MySqlCommand("INSERT INTO test (value) VALUES ('Test')", connection); int i = insertCommand.ExecuteNonQuery();
Teil 3: Werte aus der DB lesen
Für das befüllen eines Datasets oder einer Datatable gibt es den MySqlDataAdapter mit der “Fill(…)” Methode (gleiches System wie bei MS SQL, nur mal mit MySql davor
).
MySqlCommand readCommand = new MySqlCommand("SELECT * FROM test", connection); MySqlDataAdapter adapter = new MySqlDataAdapter(readCommand); DataTable datatable = new DataTable(); adapter.Fill(datatable); for (int x = 0; x < datatable.Rows.Count; x++) { object[] values = datatable.Rows[x].ItemArray; }
Teil 4: Daten in der DB ändern
Ebenso implementieren wie das schreiben von Daten, nur anderes SQL Statement & wieder benutzen wir MySqlCommand dafür.
MySqlCommand updateCommand = new MySqlCommand("UPDATE test SET value = 'UpdatedTest'", connection); int updatedReturnValue = updateCommand.ExecuteNonQuery();
Teil 5: Daten aus der DB löschen
Ebenso wie oben beschrieben & gleiches Prinzip wie bei unserem MS SQL Beispiel.
MySqlCommand deleteCommand = new MySqlCommand("DELETE FROM test", connection); int deleteReturnValue = deleteCommand.ExecuteNonQuery();
Abschließende Bemerkung
Der .NET Connector von MySQL erlaubt es auf sehr einfache Art und Weise auf eine MySQL DB zuzugreifen – wer bereits mit MS SQL und .NET zutun hatte, kann ebenso “leicht” mit MySQL arbeiten. Die tiefergehenden Sachen sollten dann direkt bei MySql nachgeschaut werden, wie z.B. der Zugriff auf gespeicherte Prozeduren oder BLOB Daten verarbeiten.
Wie auch bei dem MS SQL Beispiel gilt auch hier: Der Code soll nur demonstrieren, wie man ganz primitiv auf die DB zugreift. Es gibt bestimmt bessere Methoden, allerdings soll dies nur eine Einführung sein und zeigt schon ganz gut, das man .NET und MySQL auch sehr gut zusammen nutzen kann.
Infos für den Source Code:
Die Tabelle sollte “test” heißen und die Spalten “id” und “value”. Die Datenbank sollte “dotnet” heißen oder der Connectionstring sollte geändert werden. Falls man eine bereits eingerichtete MySql DB nutzt, muss man natürlich die Zugangsdaten entsprechend anpassen.







Padjon
15. August 2008
Hallo,
ich bin Azubi zum Fachinformatiker.
Da freut man sich immer, wenn man so tolle Hilfestellungen wie diese hier findet, um beim Selbststudium voran zu kommen.
Dabei finde ich es jedoch schade, dass man hier Code-Fragmente mit dem IE-7 nicht lesen kann, auf welchen ich jedoch z.B. auf Arbeit angewiesen bin.
Einzelne Code-Zeilen gehen über die rechte Seite hinaus und verschwinden hinter den "Buchempfehlungen" und was sonst noch in der rechten Spalte zu finden ist.
Ansonsten, super Sache Danke.
Robert Mühsig
18. August 2008
Hallo,
der Artikel ist bereits etwas älter – die neuern HowTos werden über ein spezielles WordPress Plugin "verschönert", sodass der hässliche Effekt (der auch im FF auftritt) unterbunden.
Zur Not einfach den Sourcecode runterladen
Christoph
15. September 2008
Hallo,
mit Strg C und dann mit Strg V kann man den abgeschnittenen Code in z.B. Word kopieren. Vielen Dank für den schönen Artukel!
Gruß
Christoph
Hans-Joachim Sowada
21. May 2009
Hallo,
kann nur Bestätigen- Super Beitrag.
Gruß
HansÂ
billg
10. February 2010
Der Artikel ist sehr hilfreich, wenn man mit der MySql-API für .NEt nicht vertraut ist.
Ein Kleinigkeit ist mir aufgefallen:
Wenn ich einen MySqlConnection-String mit “Pwd=;” aber ohne eigentliches Passwort zu öffnen versuche, fliegt mir eine “KeyNotFoundException” um die Ohren.
Der “Pwd=;”-String darf da nicht drinstehen, wenn es kein Passwort gibt.
Das Ganze kann natürlich auch an meiner Version liegen…
Danke nochmals.
Claude Glauser
1. October 2010
Guter Beitrag!
Was ich noch wichtig finde:
Es gibt Datenbankunabhängige Klassen und Interfaces. Dadurch kann bei einem Datenbankwechsel auf eine Änderung im Code sogar verzichtet werden.
DbProviderFactory
DbConnection, IDbConnection
DbCommand, IDbCommand
DbParameter, IDbParameter
Torq
11. May 2011
Die Laufleiste am rechten Homepage-Rand verdeckt grosse Teile des Codes und der Bilder. Vielleicht die Webseitenbreite auf auto setzen?
Ansonsten: Gutes Tutorial, hat mir geholfen.
Torq
11. May 2011
Und offenbar kann ich nicht lesen, sonst haett ich das angesprochene schon in den Kommentaren entdeckt.