04.05.2005, 00:17 Uhr
Da in letzter Zeit des öfteren nach MySQL Zugriff gefragt wird, hier ein kl. Tutorial, wie man auf eine Tabelle zugreift.
Der Bot bietet von sich aus einen Zugriff auf Datenbanken (auch andere als MySQL, sog. ODBC Datenbanken) über sogenannte Datei-DSNs (Data Source Names). Die Einstellungen für die Verbindung (Server, Datenbank, Username und Passwort) werden dabei in solch einem Datei-DSN gespeichert und vom Bot benutzt um eine Verbindung zum Server herzustellen.
Hier ein kleiner Codeschnippsel um eine solchen Datei-DSN zu erstellen:
Diese Prozedur erstellt einen Datei-DSN im AnGelBot-Ordner, der über den MySQL ODBC 3.51 Treiber laufen wird. Der Treiber muss auf dem PC des Bots installiert sein. Ihr könnt ihn hier (Link) runterladen.
Wie stellt man aber nun eine Verbindung her und vor allem: Wie bekommt man irgendwelche Daten?
Hier bietet der Bot 3 Methoden, die Zugriff auf die Daten ermöglichen:
Bis jetzt erstellt unser Script also einen Datei-DSN, verbindet sich mit dem Server (LoadDSN) und trennt die Verbindung später wieder (CloseDSN).
Nun zum interessantesten Teil: Daten abrufen.
Für diese Aufgabe verfügt der Bot über die Funktion SQLExecute. Sie kann nur aufgerufen werden, wenn vorher LoadDSN aufgerufen wurde und man den Rückgabewert (Verweis auf den DSN) gespeichert hat.
Nicht vergessen, dass man diese Zuweisung mit "Set <Variable> = LoadDSN("<DSN>")" machen muss, weil es sich bei dem Rückgabewert um ein Objekt handelt.
Die Funktion SQLExecute liefert wiederrum ein Objekt zurück, dieses mal ein ADO-Recordset, was alle Daten beinhaltet die ihr angefragt habt.
Folgende erwähnenswerte Eigenschaften und Methoden hat ein ADO-Recordset was ihr über SQLExecute erhaltet:
BOF - aktueller Zeiger ist auf dem ersten Eintrag
EOF - aktueller Zeiger ist auf dem letzten Eintrag
Fields - eine Liste der empfangenen Werte in den Spalten
Fields.Count - Anzahl der empfangenen Spalten
Fields(0) - Zugriff auf die erste Spalte
Fields(1) - Zugriff auf die zweite Spalte usw...
Beachtet auch die Einstellungen im PolicySetup (.policy), Nummer 2 "Database"!
Viel Spaß beim Testen und nicht so schnell aufgeben
Der Bot bietet von sich aus einen Zugriff auf Datenbanken (auch andere als MySQL, sog. ODBC Datenbanken) über sogenannte Datei-DSNs (Data Source Names). Die Einstellungen für die Verbindung (Server, Datenbank, Username und Passwort) werden dabei in solch einem Datei-DSN gespeichert und vom Bot benutzt um eine Verbindung zum Server herzustellen.
Hier ein kleiner Codeschnippsel um eine solchen Datei-DSN zu erstellen:
Code:
Sub CreateDSN(sName, sServer, sDatabase, sUsername, sPassword)
WriteINIString "ODBC", "DRIVER", "MySQL ODBC 3.51 Driver", sName & ".dsn"
WriteINIString "ODBC", "SERVER", sServer, sName & ".dsn"
WriteINIString "ODBC", "DATABASE", sDatabase, sName & ".dsn"
WriteINIString "ODBC", "USER", sUsername, sName & ".dsn"
WriteINIString "ODBC", "PASSWORD", sPassword, sName & ".dsn"
End SubDiese Prozedur erstellt einen Datei-DSN im AnGelBot-Ordner, der über den MySQL ODBC 3.51 Treiber laufen wird. Der Treiber muss auf dem PC des Bots installiert sein. Ihr könnt ihn hier (Link) runterladen.
Wie stellt man aber nun eine Verbindung her und vor allem: Wie bekommt man irgendwelche Daten?
Hier bietet der Bot 3 Methoden, die Zugriff auf die Daten ermöglichen:
Code:
Sub Init()
'Variable in der ein Verweis auf unsere DSN gespeichert wird
Dim myDSN
Script "MySQL Beispiel"
'Erstellt eine Datei-DSN mit dem Namen "mysql_test.dsn" im AnGelBot-Ordner
CreateDSN "mysql_test", "www.mein-server.com", "Datenbank", "Benutzer", "Passwort"
'Datei-DSN laden und Verbindung herstellen
Set myDSN = LoadDSN("mysql_test")
'...Daten abrufen...
'Verbindung trennen
CloseDSN myDSN
'Variablen freigeben
Set myDSN = Nothing
End SubBis jetzt erstellt unser Script also einen Datei-DSN, verbindet sich mit dem Server (LoadDSN) und trennt die Verbindung später wieder (CloseDSN).
Nun zum interessantesten Teil: Daten abrufen.
Für diese Aufgabe verfügt der Bot über die Funktion SQLExecute. Sie kann nur aufgerufen werden, wenn vorher LoadDSN aufgerufen wurde und man den Rückgabewert (Verweis auf den DSN) gespeichert hat.
Nicht vergessen, dass man diese Zuweisung mit "Set <Variable> = LoadDSN("<DSN>")" machen muss, weil es sich bei dem Rückgabewert um ein Objekt handelt.
Die Funktion SQLExecute liefert wiederrum ein Objekt zurück, dieses mal ein ADO-Recordset, was alle Daten beinhaltet die ihr angefragt habt.
Code:
Sub Init()
Dim myDSN, myData
Script "MySQL Beispiel"
'Erstellt eine Datei-DSN mit dem Namen "mysql_test.dsn" im AnGelBot-Ordner
CreateDSN "mysql_test", "www.mein-server.com", "Datenbank", "Benutzer", "Passwort"
'Datei-DSN laden und Verbindung herstellen
Set myDSN = LoadDSN("mysql_test")
'...Daten abrufen...
Set myData = SQLExecute(myDSN, "SELECT COUNT(*) FROM table")
SpreadFlagMessage 0, "+m", myData.Fields(0) & " Zeilen in Tabelle 'table'"
'Verbindung trennen
CloseDSN myDSN
'Variablen freigeben
Set myDSN = Nothing
Set myData = Nothing
End SubFolgende erwähnenswerte Eigenschaften und Methoden hat ein ADO-Recordset was ihr über SQLExecute erhaltet:
BOF - aktueller Zeiger ist auf dem ersten Eintrag
EOF - aktueller Zeiger ist auf dem letzten Eintrag
Fields - eine Liste der empfangenen Werte in den Spalten
Fields.Count - Anzahl der empfangenen Spalten
Fields(0) - Zugriff auf die erste Spalte
Fields(1) - Zugriff auf die zweite Spalte usw...
Beachtet auch die Einstellungen im PolicySetup (.policy), Nummer 2 "Database"!
Viel Spaß beim Testen und nicht so schnell aufgeben
