Für viele Anwender fällt ein ODBC-Zugriff auf eine MySQL-Datenbank flach, weil sie auf ihrem Rechner keine zusätzliche Software wie etwa MyODBC installieren dürfen. Mit einer speziellen MySQL-DLL und einigen Klassen einer Open Source-Bibliothek gelingt dies auch ohne Installation von MyODBC – Sie brauchen nur noch eine einzige DLL in das Verzeichnis zu kopieren, in dem sich auch Ihre Datenbankdatei befindet. Dieser Beitrag zeigt die Möglichkeiten dieser Lösung auf.
Den Großteil der Arbeit der in diesem Beitrag vorgestellten Lösung übernimmt das Projekt vbmysqldirect, das Sie unter http://www.vbmysql.com/projects/vbmysqldirect herunterladen können. Gleich vorneweg der Hinweis, dass die in der hier vorgestellten Lösung verwendeten Klassen der GNU Library General Public License unterliegen. Das bedeutet unter anderem, dass Sie Anwendungen, welche diese frei verfügbaren Klassen nutzen, nicht kommerziell vertreiben dürfen.
Voraussetzungen
Einzige Voraussetzung für den Einsatz der in diesem Beitrag vorgestellten Lösung ist das Vorhandensein der Bibliothek libmysql.dll im Verzeichnis der Datenbankdatei. Diese DLL gelangt üblicherweise mit der Installation von MySQL auf den Rechner, kann aber auch anderweitig bezogen werden – zum Beispiel von dieser Seite: http://www.mysql.com/downloads/connector/c/. Die Beispieldatenbank enthält diese DLL in einem OLE-Feld der Tabelle tblTools, von wo aus sie mit der Prozedur ExportDLL in das aktuelle Datenbankverzeichnis exportiert werden kann. Vom Projekt vbmysqldirect importieren Sie einige Klassen und ein Standardmodul in die Datenbank, von der aus Sie direkt auf eine MySQL-Datenbank zugreifen möchten. In Bild 1 sehen Sie diese Module. Wenn Sie die Module importiert und die DLL in das Anwendungszeichnis exportiert haben, können Sie loslegen. Wie das geht, zeigt das folgende Beispiel.
Bild 1: Das Modul modDeclare und die Klassen dieses Projekts enthalten die Methoden für den Zugriff auf MySQL-Datenbanken.
Datenbanken ausgeben
Die Objekte und Methoden von vbmysqldirect lehnen sich stark an das ADO-Objektmodell an. Dennoch liefern sie einige MySQL-spezifische Methoden. Mit der ersten zeigen wir, wie Sie alle Datenbanken eines angegebenen MySQL-Servers anzeigen. Die Prozedur aus Bild 2). Dieses Formular ist an die Tabelle tblConnections gebunden, welche Verbindungsdaten für den Zugriff auf die einzelnen Datenbanken enthält. Dabei deklariert und erstellt sie zunächst ein Objekt namens conn auf Basis der Klasse MYSQL_CONNECTION. Diese wird mit den im aktuellen Datensatz des Formulars gespeicherten Daten geöffnet. Außerdem verwendet die Prozedur ein Objekt des Typs MYSQL_RS, welches dem Recordset-Objekt entspricht.
Listing 1: Zusammenstellen einer Liste aller Datenbanken eines MySQL-Servers
Private Sub cmdDatenbankenAnzeigen_Click() Dim conn As MYSQL_CONNECTION Dim rst As MYSQL_RS Dim strDatenbanken As String Set conn = New MYSQL_CONNECTION Set rst = New MYSQL_RS conn.OpenConnection Me!Server, Me!Benutzername, Me!Kennwort, Me!Datenbank, Me!Port Set rst = conn.Show(MY_SHOW_DATABASES) Do While Not rst.EOF strDatenbanken = strDatenbanken & rst.Fields("Database").Value & ";" rst.MoveNext Loop Me!lstDatenbanken.RowSource = strDatenbanken End Sub
Bild 2: Das Formular frmMySQL zeigt einige Datenbank-Informationen an.