Windows - MySQL szerver bemutatása - MySQL adatbázisok elérése VB szkriptekből

MySQL 6. rész

A MySQL adatbázisok adatainak lekérdezéséhez rengeteg módszer létezik: cikksorozatunkban láttuk már, hogy kell végrehajtani egy parancssori ablakból, a grafikus felületről, Delphi Software Online hetilapunkban közöltünk többféle Delphi-s megvalósítást, jelen részben egy VB szkriptet fogunk készíteni, de ezenkívül használhatunk Java- vagy Perl szkripteket, mindezt akár weblapokról is.
Mellékelten megtalálható a cikkben szereplő szkript, használata előtt meg kell adni a MySQL kiszolgálóhoz szükséges kapcsolódási paramétereket a leírtak figyelembevételével és módosítani kell a lekérdezést is, mert példánkban feltételeztük egy képzeletbeli adatbázis meglétét.
Az alábbiak végrehajtása előtt telepíteni kell a MySQL ODBC meghajtóját (lásd cikksorozatunk 3. részét), ugyanis ezen keresztül fogjuk az adatbázisokat és azon belül a táblákat elérni. Ismerni kell az adatbázishoz kapcsolódó felhasználói DSN (Data Source Name) nevét, a bejelentkezéshez szükséges nevet és jelszót, illetve az adatbázis és táblák neveit.
Megjegyzés: alábbi példánkban feltételezzük egy "szamla" nevű DSN létét, mely a "szamla" nevű adatbázisra mutat és az "ugyfelek" nevű táblából kérdezünk le adatokat, a kapott információt pedig az aktuális könyvtárban lévő "QueryResult.txt" nevű fájlba mentjük (ha a fájl nem létezik, automatikusan létrehozzuk).
Lássuk a szkriptet és működésének magyarázatát:
Írjuk elő, hogy a futási hibákat hagyja a rendszer figyelmen kívül, a lekérdezett adatok feldolgozását addig folytatjuk, amíg a rekord végére nem érünk (EOF), ekkor a Windows Scripting Host (WSH) generál egy hibaüzenetet, jelezve, hogy nem tudja tovább folytatni az olvasást. Nincs is rá szükségünk, de a hibaüzenet megállítja a szkript futtatását, amit el kell kerülnünk.
On Error Resume Next
Az eredményt szövegfájlba fogjuk menteni a FileSystemObject (FSO) használatával. Elő kell állítanunk az új fájlt, írni kell bele, illetve ha már létezik, akkor felül kell írni. A szükséges attribútumokat számokkal lehet átadni, de sokkal érthetőbb, ha szöveg formátumban tesszük és konstansokban tároljuk az értékeket.
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Deklaráljuk a későbbiekben használandó változókat (nem kötelező).
dim conn, rs, fso, f
Kapcsolódunk az "adodb.connection" rendszerobjektumhoz és meghívjuk az "Open" metódusát, ezzel lehet elérni az ODBC adatbázisokat. A következő paramétereket kell átadni a metódus után:
  • DSN - Adatforrás neve, amihez kapcsolódunk. Cikkünk elején néztük meg a felügyeleti eszközök megfelelő ablakában.
  • UID - Az adatok elérésére engedélyezett felhasználói név.
  • PWD - Előző névhez tartozó jelszó. Figyelem! A jelszó titkosítás nélkül tárolódik a szkriptben.
  • DATABASE - Elérendő adatbázis neve.
set conn = createobject("adodb.connection")
Conn.open "DSN=szamla;UID=root;PWD=;DATABASE=szamla"
Miután létrejött a kapcsolat, definiálunk egy új rekordhalmazt (RecordSet) a lekérdezés eredményének tárolására (még mindig az "adodb"-n belül). A kapott halmaz "Open" metódusával lehet átadni a szabványos SQL lekérdezést, ami jelen esetben a "Products" tábla tartalmának listázását jelenti.
set rs = createobject("adodb.recordset")
rs.open "Select * from ugyfelek", conn
Következő lépés, hogy kiírjuk a kapott eredményt "QueryResult.txt" szövegfájlba. Itt jön be a szkript elején megadott konstans. Most csak az egyiket használjuk, de a könnyebb bővíthetőség és a technika bemutatásának kedvéért definiáltuk a többit.
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("QueryResult.txt", ForWriting, True)
A "RecCount" változóba fogjuk megszámolni, hogy a lekérdezés eredménye hány sorból áll.
RecCount=0
DO-WHILE ciklussal haladjunk végig a kapott rekordhalmazon és minden esetben csak az első mező tartalmát (rs(0)) írjuk a fájlba.
 Do While Not rs.EOF
   f.Write "Sorszám: " & RecCount & "   " & rs(0) & chr(13) & chr(10)
   rs.MoveNext
   RecCount=RecCount+1
loop
Jelenítsük meg a képernyőn a kapott rekord számot, ami azért is jó, mert így legalább tudjuk mikor ért véget a szkript futása.
wscript.echo "Rekorszám: " & RecCount
Végül zárjuk a megnyitott fájlt és opcionális megoldásként töröljük a memóriában lévő változókat.
f.close
rs.close
conn.close
set rs = nothing
set conn = nothing

MySQL szerver cikksorozat