Kategorie: Datenbankzugriffe
Frage: Wie kann man ohne ODBC, sondern mit OLEDB auf eine MySQL-Datenbank zugreifen?
Neben ODBC gibt es noch weitere Möglichkeiten, um aus den ASP-Scripten heraus auf einen
MySQL-Server zuzugreifen. Eine davon möchte ich Ihnen jetzt näher vorstellen.


Die Voraussetzungen
Die benötigte Datei MySQLX.dll finden Sie, wie alle anderen windowsbasierten Erweiterungen
unter der Adresse http://www.mysql.com/downloads/os-win32.html. Hier wählen Sie die Datei
MySQLMngr.zip aus und laden diese herunter.

Entpacken Sie die Datei in ein Verzeichnis Ihrer Wahl. Ich habe z.B. die Dateien unterhalb
des MySQL-Verzeichnisses in das /COM-Verzeichnis entpackt. Wenn Sie sich die anschließende
Verzeichnisstruktur ansehen, so finden Sie im Verzeichnis C:\mysql\COM\mysqlx\Acx die
Dateien libmySQL.dll und MySQLX.dll. Die letztgenannte müssen Sie am System registrieren.

Öffnen Sie dafür Start-Ausführen und geben Sie folgende Anweisung ein:

regsvr32 C:\mysql\COM\mysqlx\Acx\MySQLX.dll

Sollten Sie die ActiveX-Komponente von einem anderen Ort aus registrieren wollen, so beachten
Sie bitte, dass die Datei libmySQL.dll sich immer im selben Verzeichnis befindet wie die Datei
MySQLX.dll. Andernfalls erhalten Sie nach Abschluss des Registrierungsvorganges eine Fehler-
meldung.


Der Verbindungsaufbau
Schauen wir uns im nächsten Schritt den eigentlichen Verbindungsaufbau an.
Wie schon fast selbstverständlich erstellen wir ein Connection-Objekt.

Set MyConnect = Server.CreateObject("MySQL.Connection")

Nun stehen uns die Eigenschaften und Methoden der Connection-Klasse zur Verfügung.

Hierbei sollten Sie jedoch beachten, daß die Eigenschaften für Host, User, Password,
DB, Port und ClientFlag allesamt nur lesend sind. Eine Zuweisung nach dem Muster
MyConnect.Host = "rnt2ksrv" scheitert somit regelmäßig.

Um nun die Verbindung zum MySQL-Server herzustellen, rufen wir die Connect-Methode
auf.  An die Methode übergeben wir in der Reihenfolge die Werte für Host, User, Password,
DB, Port und ClientFlag.

MyConnect.Connect "rnt2ksrv","root","","mysql",3306,0

Wie Sie sehen, habe ich die Parameter ohne umschließende Klammern an die Connect-
Methode übergeben. Erwarten Sie allerdings einen Rückgabewert durch den Aufruf der
Methode, so müssen Sie die Parameter in umschließenden Klammern übergeben.

DBConnection = MyConnect.Connect("rnt2ksrv","root","","mysql",3306,0 )


Die Navigation durch das RecordSet
Im direkten Vergleich zu ODBC gestaltet sich das ganze hier etwas anders. Als erstes
müssen wir dem MySQL-Server die eigentliche Abfrage mitteilen. Dies geschieht über
das Connection-Objekt. Es empfiehlt sich dabei, das Absenden der SQL-Anfrage zugleich
in eine if-Abfrage zu verpacken.

If MyConnect.Query("SELECT * FROM neu LIMIT 0, 20;") Then

Der Vorteil in dieser Vorgehensweise liegt darin, daß das RecordSet-Objekt erst gar nicht
erstellt werden muß, wenn es schon an einer gültigen SQL-Abfrage mangelt. Ist die SQL-
Anfrage gültig, so wird im nächsten Schritt eine Objektinstanz auf die RecordSet-Klasse
erstellt.

Set MyRecordSet = Server.CreateObject("MySQL.RecordSet")

Bevor nun letztlich die Ausgabe erfolgen kann, muß dem RecordSet noch die zu benutzende
Connection bekannt gegeben werden. Dies erfolgt über die Zuweisung an die Connection-
Eigenschaft des RecordSet.

MyRecordSet.Connection = MyConnect

Über eine While-Schleife durchlaufen wir das RecordSet.

With MyRecordSet
    While .Next()
        Response.Write .Field(0).Value & " ----- " & _
                       .Field(i+1).Value &"<br>"
    Wend
End With

Über den Field-Index wird dann letztendlich der Wert ausgegeben.

Im Ergebnis lässt sich feststellen, daß eine Verbindung zum MySQL-Server nicht zwangsläufig
über ODBC realisiert werden muß, sondern dass es auch per OLEDB kein Problem ist, dies zu
tun.

Copyright 2000 - 2024 by Stefan Falz Webconsulting