Codefieber.de

IT-Blog

MySQL Connection mit C# .Net

| 7 Kommentare

MySQL Connection mit C# – Eine kleine Anleitung

Drei Dinge werden als Erstes benötigt um eine MySQL Connection via C# aufbauen zu können:

1. MySQL Server (für localhost – Apache zum Beispiel)
2. MySQL Administrator (phpMyAdmin)
3. MySQL Connector .net (http://dev.mysql.com/downloads/connector/net/)

 

MySQL Server
Der MySQL Server ist der Server, wo drauf die Datenbank liegt und man kann z.b. per CommandLine abfragen tätigen bzw. auch Tabellen erzeugen. Wenn man nicht zum MySQL Server verbinden kann, sollte man hier als erstes schauen ob der Server korrekt läuft.

MySQL Administrator
Der MySQL Administrator kann kostenfrei auf der MySQL-Website herunter geladen werden. (Alternativ kann auch der phpMyAdmin genutzt erden: http://www.phpmyadmin.net) Er hilft dabei Datenbanken zu verwalten, anzulegen und zu löschen, dass alles natürlich mit einem Grafischen Interface. Keine CommandLine und auch keine Tipperei in dieser. Sollten Probleme mit der Verbindung zur Datenbank auftreten:

Der Server Host sollte der Computername oder die IP sein, wo die MySQL-Datenbank drauf liegt. Sofern man diese auf dem eigenen Rechner für Testzwecke installiert hat, ist es der ‚localhost‘.

Der Username ist ‚root‘.
Das Passwort ist das Passwort, welches bei der Installation angegeben wurde. Leer lassen, sofern keins angegeben wurde.
Der Port ist ‚3306‘ bzw. der der bei der Installation angegeben wurde.

 

The MySQL Connector .Net
Der MySQLConnector ist eine kostenlose Programmbibliothek von MySQL, für .Net. Die DLL ist zu finden unter:

oder der Pfad den man bei der Installation des Connectors angegeben hat.

SQL Server 2016: Das Programmierhandbuch. Inkl. ADO.NET Entity Framework und Migration von SQL Server 2014

Price: EUR 69,90

4.7 von 5 Sternen (3 customer reviews)

55 used & new available from EUR 56,99

Die erste C# Consolen Anwendung, welche MySQL nutzen soll
Es wurde alles Installiert ( MySQL Server, MySQL Administrator (phpMyAdmin) & MySQL Connector .net )
Nun muss eine Referenz auf den MYSQLConnector gesetzt werden. Dazu muss im Visual Studio unter ‚Verweise‘, die ‚MySql.Data.dll‘ ausgewählt werden. Dann kann man auch im Namespace per ‚using‘ die Verweise setzen ( ‚using MySql.Data.MySqlClient;‘ ). Zu finden unter:

 

Eine Verbindung zu öffnen und wieder zu schließen ist ganz einfach:

 

Der Query String sollte wie folgt aufgebaut werden:

server=$servername$;database=$databasename$;uid=$username$;password=$password$;

$servername$ = Der Name vom Server bzw. die IP (z.B.: ‚localhost‘), wo drauf die Datenbank läuft.
$databasename$ = Name der Datenbank.
$username$ = Username des angelegten Users (‚root‘).
$password$ = Passwort des Users.

 

Hier mal ein Beispiel für eine Methode, die einen konformen Connection String zusammen baut:

Diese Methode generiert einen Connection String, den man nun im MySQLConnector Objekt Konstuktor nutzen kann.

 

Die Methode mit der neuen ‚CreateConnStr‘ wird nun in die Consolen Anwendung implementiert:

 

So, somit haben wir eine Verbindung zu einer MySQL Datenbank aufgebaut und diese wieder geschlossen. Nun kann man natürlich noch Datenbankabfragen mit einbauen, dies kommt dann aber in einem weiteren Artikel.

SQL Server 2016: Das Programmierhandbuch. Inkl. ADO.NET Entity Framework und Migration von SQL Server 2014

Price: EUR 69,90

4.7 von 5 Sternen (3 customer reviews)

55 used & new available from EUR 56,99

avatar

Autor: Pascal

Codefieber.de wird von Pascal Betke geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

7 Kommentare

  1. avatar

    Frage zu MySql-Zugriff mit C# auf Web-Datenbank:

    Aufruf funktioniert:
    MySqlConnection conn = new MySqlConnection(„SERVER=localhost; DATABASE=db; UID=uid; PASSWORD=pw“);
    conn.Open();

    Aufruf funktioniert aus dem C#Programm nicht, obwohl ich mit den gleichen Parametern z.B. MySqlHeidi DB-Zugriff bekomme:

    MySqlConnection conn = new MySqlConnection(„SERVER=mysql.1blu.de; DATABASE=db; UID=uid; PASSWORD=pw“);
    conn.Open();

    Müssen im C#Programm noch irgendwelche Web-Instanzen zwischengeschaltet werden?
    Ich war der Annahme, dass using MySql.Data.MySqlClient genügt?

    • avatar

      Hallo Gotthard,

      ansich sollte das using ausreichen und der String auch korrekt sein. Kommt denn eine Exception? Was sagt diese?
      Host, User / Password sind korrekt?

  2. avatar

    Danke für den ersten Hinweis.
    Nachdem ich das try-catch entfernt habe und entsprechend der Fehlermeldung
    „MySql.Data.MySqlClient.MySqlException (0x8000405) Authentification with old passsword no longer supported, use 4.1 style passwords” das Passwort geändert habe, klappt es noch immer nicht.

    Kann es an der Version der …\MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.0\MySql.Data.dll liegen?

    Mein Provider 1blu verwendet MySql 5, meine locale Datenbank 5.1.53.
    Bei der Installation durch WAMPP wurden für dieser Datenbank nun verschiedene Assemblies unter V2.0, v.4.0 und v.4.5 bereit gestellt. Ich hatte mich für v4.0 entschieden. Woran kann man die richtige erkennen?

  3. avatar

    Danke für Deine Unterstützung!
    Die Datenbankverbindung zu meiner MySql-Datenbank bei 1blu aus einem C#Programm heraus funktioniert nun mit MySQL Connector Net 6.9.5 v4.0 und
    MySqlConnection conn = new MySqlConnection(“SERVER=server; DATABASE=database; UID=uid; PASSWORD=41verschlüsseltespassword”);
    Bei 1blu kann man die Passwortverschlüsselung im Kundenbereich selbst einstellen, was den obigen SET-Befehlen entspricht, sodass der Fehler „Authentication with old password no longer supported, use 4.1 style passwords“ nicht mehr auftritt.

  4. avatar

    Hallo ich habe mir das gerade mal durchgelesen.
    diese variante funktioniert zwar aber ich sehr sehr unsicher.
    Das mit dem „unsicher“ stimmt insofern, dass man mit Tools wie JustDecompile das ganze dekompilieren kann und das Passwort im klartext sehen kann.

    meine frage wäre jetzt.
    wie erstelle ich eine sichere variante dazu ?

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.