27 November 2007 .NET, Datenbank, HowTo, MySQL, SQL Robert Muehsig

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.

image

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:

image

Ü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.

image

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:

image

Unter dem Punkt “MySQL.Data” finden wir dann unseren Connector:

image

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();
 image

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.

[ Download Source Code ]


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!