8.6 Verbindung zu MySQL 

MySQL-Server
Bei MySQL handelt es sich um ein weit verbreitetes, SQL-basiertes Datenbanksystem. Es würde den Rahmen dieses Buches sprengen, wollte man die Installation des MySQL-Servers und die Erstellung einer Datenbank mit einer Tabelle erläutern. Im Folgenden soll daher lediglich gezeigt werden, wie man mit Visual Basic 2008 auf eine vorhandene MySQL-Datenbank zugreift.
8.6.1 ODBC-Treiber 

Connector/ODBC
Als (eine mögliche) Schnittstelle zwischen Visual Basic und MySQL wird ein ODBC-Treiber benötigt. Unter ODBC (Open Database Connectivity) versteht man eine Methode zum Zugriff auf verschiedene Datenbanksysteme über den jeweils passenden Treiber.
Der Treiber für MySQL nennt sich Connector/ODBC. Er kann auf der Internetseite von MySQL heruntergeladen werden, befindet sich aber auch auf der beiliegenden DVD. Die derzeit aktuelle Version ist 3.51.
ODBC-Datenquelle
Die Installation mithilfe der MSI-Installationsdatei mysql-connector-odbc-3.51.23-win32.msi verläuft in der Regel ohne Probleme. Nach der Installation findet sich der Treiber in der Liste der ODBC-Datenquellen, sichtbar über Start • Einstellungen • Systemsteuerung • Verwaltung • Datenquellen (ODBC) • Registerkarte Treiber:
Abbildung 8.40 Liste der ODBC-Datenquellen
8.6.2 Datenquelle 

Man hat nun zwei Möglichkeiten des Zugriffs auf eine Datenquelle:
- Man kann einen festen DSN (Data Source Name) einrichten. Dabei werden die Daten der Verbindung zur Datenbank und notwendige Parameter fest gespeichert, und man muss im Visual Basic-Programm nur noch den DSN aufrufen, um eine Verbindung herzustellen.
Fester DSN
- Etwas umständlicher, aber flexibler ist der Zugriff, wenn man alle Verbindungsdaten erst in der Verbindungszeichenkette (Connection String) des Programms festlegt, ähnlich wie bei einer MS Access-Datenbank. Innerhalb eines Programms hat man dann aber die Möglichkeit, einzelne Parameter zu verändern.
Flexibler Zugriff
Beide Möglichkeiten werden nachfolgend gezeigt.
Bevor man mit der Einrichtung eines DSN (und generell mit dem Zugriff auf eine MySQL-Datenbank) beginnt, sollte man sich vergewissern, dass der Datenbank-Server läuft.
System-DSN
Zur Einrichtung eines DSN wechselt man in der Liste der ODBC-Datenquellen (siehe Installation) auf die Registerkarte System-DSN. Diese DSNs stehen allen Benutzern des PCs zur Verfügung. Über den Button Hinzufügen gelangt man auf das Dialogfeld Neue Datenquelle erstellen. Hier wird der soeben installierte MySQL ODBC-Treiber ausgewählt:
Abbildung 8.41 Auswahl des Treibers
Anschließend gelangt man zu einer Eingabemaske für den Connector/ ODBC:
Abbildung 8.42 Parameter für Connector/ODBC
Folgende Einstellungen sind vorzunehmen:
- Der frei wählbare »Data Source Name« muss festgelegt werden, damit die Datenbank im Programm über diesen Namen angesprochen werden kann. Hier ist dies odbc_firma. Es soll auf die MySQL-Datenbank firma zugegriffen werden. Diese ist der Einfachheit halber ebenso aufgebaut wie die gleichnamige MS Access-Datenbank.
Data Source Name
- Unter Server sollte der Name des Datenbank-Servers eingetragen sein. Wird dort nichts eingetragen, so wird auf den Server localhost zugegriffen. Dies ist auch der Wert nach einer MySQL-Standard-Installation.
Server
- Bei User und Password werden Name und Passwort des Datenbank-Benutzers eingetragen. Der Normalbenutzer nach einer MySQL-Standard-Installation hat den Namen root und kein Passwort.
User
- In der Liste Database kann der Name der gewünschten Datenbank ausgewählt werden.
Database
- Mithilfe des Buttons Test kann der soeben eingerichtete DSN getestet werden:
Abbildung 8.43 Test der Verbindung
Testen
Der DSN ist nun eingerichtet und kann benutzt werden.
8.6.3 Datenbankzugriff mit Visual Basic 

Der Ablauf eines Zugriffs erfolgt ähnlich wie für MS Access-Datenbanken. Nachfolgend werden eine Auswahlabfrage und eine Aktionsabfrage durchgeführt. Die Unterschiede zum Zugriff auf eine MS Access-Datenbank werden besonders hervorgehoben.
Zunächst das Ergebnis der Auswahlabfrage:
Abbildung 8.44 Auswahlabfrage
Der Code lautet:
Public Class frm0803
Private Sub cmdSehen_Click( ... ) Handles ...
Dim con As New Odbc.OdbcConnection
Dim cmd As New Odbc.OdbcCommand
Dim reader As Odbc.OdbcDataReader
' con.ConnectionString = "DSN=odbc_firma"
con.ConnectionString = "Provider=MSDASQL;" _
& "Driver={MySQL ODBC 3.51 Driver};" _
& "Server=localhost;UID=root;" _
& "database=firma"
cmd.Connection = con
cmd.CommandText = "select * from personen"
Try
con.Open()
reader = cmd.ExecuteReader()
lstTab.Items.Clear()
Do While reader.Read()
lstTab.Items.Add(reader("name") & " # " _
& reader("vorname") & " # " _
& reader("personalnummer") & " # " _
& reader("gehalt") & " # " _
& reader("geburtstag"))
Loop
reader.Close()
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
[ ... ]
End ClassZur Erläuterung:
- Die Objekte der Klassen OdbcConnection, OdbcCommand und OdbcDataReader aus dem Namespace Odbc entsprechen den Objekten der Klassen OleDbConnection, OleDbCommand und OleDbReader aus dem Namespace OleDb.
Odbc
- Sie werden für den Zugriff auf ODBC-Datenquellen benötigt.
- In der Eigenschaft ConnectionString steht bei Benutzung eines fest eingerichteten DSN nur DSN=odbc_firma. Diese Version ist im obigen Codebeispiel auskommentiert.
- Falls man die Verbindungszeichenkette selber zusammenstellt, sieht sie wie folgt aus:
- Provider=MSDASQL für »Microsoft Data Access SQL«
Provider
- Driver={MySQL ODBC 3.51 Driver} für den installierten MySQL ODBC Treiber
- Server=localhost für den MySQL-Server
- UID=root für den Benutzernamen
- database=firma für den Datenbanknamen
- Der restliche Ablauf ist gleich geblieben.
Abbildung 8.45 zeigt das Ergebnis der Aktionsabfrage (nach anschließendem Betätigen des Buttons Sehen):
Abbildung 8.45 Aktionsabfrage
Der Code (ebenfalls in p0803):
Public Class frm0803
[ ... ]
Private Sub cmdÄndern_Click( ... ) Handles ...
Dim con As New Odbc.OdbcConnection
Dim cmd As New Odbc.OdbcCommand
Dim anzahl As Integer
Try
con.ConnectionString = "DSN=odbc_firma"
cmd.Connection = con
cmd.CommandText = _
"update personen set gehalt = gehalt * 1.05"
con.Open()
anzahl = cmd.ExecuteNonQuery()
MsgBox("Anzahl Datensätze geändert: " & anzahl)
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End ClassZur Erläuterung:
- Bei dieser Abfrage wird selbstverständlich kein Reader benötigt, da es sich um eine Aktionsabfrage ohne Abfrage-Ergebnis handelt.
- Es wurde nur der Zugriff über den festen DSN genutzt. Möchte man die andere Version verwenden, so kann man die Verbindungszeichenkette der anderen Ereignisprozedur entnehmen.
8.6.4 .NET-Treiber 

Connector/NET
Eine modernere Schnittstelle zwischen Visual Basic und MySQL bietet der Treiber Connector/NET. Er kann ebenfalls auf der Internetseite von MySQL heruntergeladen werden, befindet sich aber auch auf der beiliegenden DVD. Die derzeit aktuelle Version ist 5.0.8.1.
Verweis hinzufügen
Die Installation mithilfe der Installationsdatei mysql-connector-net-5.0.8.1.exe verläuft in der Regel problemlos. Nach der Installation muss man für das Projekt, in dem der Treiber genutzt werden soll, einen Verweis auf die Bibliotheken des Treibers einrichten. Hierzu geht man über den Menüpunkt Projekt • Verweis hinzufügen. In der Liste findet sich die Komponente MySQL.Data.
Der Ablauf eines Zugriffs erfolgt ähnlich wie für MS Access-Datenbanken bzw. für MySQL-Datenbanken mit dem ODBC-Treiber. Nachfolgend werden nur die unterschiedlichen Befehlszeilen zum Aufbau der Verbindung erläutert:
[ ... ]
Dim con As New MySql.Data.MySqlClient.MySqlConnection
Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
Dim reader As MySql.Data.MySqlClient.MySqlDataReader
con.ConnectionString = "Data Source=localhost;" _
& "Initial Catalog=firma;UID=root"
[ ... ]Zur Erläuterung:
- Die Objekte der Klassen MySQLConnection, MySQLCommand und MySQLDataReader aus dem Namespace MySql.Data.MySqlClient entsprechen den Objekten der Klassen OleDbConnection, OleDbCommand und OleDbReader aus dem Namespace OleDb.
MySqlClient
- Die Verbindungszeichenkette besteht aus den Elementen:
- Data Source=localhost für den MySQL-Server
- Initial Catalog=firma für den Datenbanknamen
- UID=root für den Benutzernamen
Die restlichen Abläufe können den Programmen mit den anderen Datenbankzugriffen entnommen werden.



Jetzt online bestellen











