C# - Műveletek Access adatbázissal

Windows Script Host lehetőségei 13. rész

forráskód letöltése
Cikkünkben tovább ismerkedünk az adatbázisokkal kapcsolatos műveletekkel. A Microsoft Office csomag részeként terjedő Access adatbázisok közkedveltek, bizonyos körülmények között előszeretettel alkalmazott megoldások. A sorozat jelen számában így bemutatjuk, hogyan érhetjük el parancsállományból, és ismertetünk néhány jellemző műveletet is, melyeket egyszerűen elvégezhetünk.
Számtalan előnye van annak, hogy adott esetben egy Access adatbázist válasszunk adataink tárolására. Mobil adatbázis, egyszerűen elérhető, egyszerű alkalmazások jól fejleszthetők rá. Ha nem akarunk komplett programot írni az apró műveletek elvégzésére, akkor egyszerűen írjunk egy script-et, mellyel IO- műveletek elvégezhetők.
A mellékelt példában ezt tesszük három művelet elvégzése érdekében. A WSH13.wsf parancsállományban három műveletet végzünk el, melyből egy adatmódosítás, kettő pedig lekérdezés. A példában a parancsállományt a programból futtathatjuk, az ott megadott információkat – megszokott módon – parancssori argumentumként adjuk át a script-nek.
A példában a NameDb.mdb Access adatbázis-állományt használjuk, melyben három táblát helyeztünk el. A Table1 tábla Name oszlopának adatait módosíthatjuk a Form MÓDOSÍTÁS füle alatt. A másik két tábla az MS SQL Server Northwind adatbázisának Employees, és Customers tábláinak Access-beli megvalósulása, egyszerűen a NameDb adatbázisba exportálva a táblákat.
A Form EGYÉB füle alatt lekérdezhetjük az adatbázis tábláit, valamint lekérdezhetjük a megadott tábla oszlopainak nevét. Lássuk a műveletek kódját részletesen.
Minden műveletben szükség van arra, hogy az Access-adatbázisunkkal kapcsolatot teremtsünk. Ehhez egy ADODB.CONNECTION objektumra van szükség, melyet a következőképpen hozunk létre:
var adoConnect = WScript.CreateObject("ADODB.Connection");
A kapcsolatot használat előtt meg kell nyitni, melyhez szükség van arra, hogy a kapcsolat ConnectionString property-jét beállítsuk. Ez Access-adatbázisunk esetében a következő lesz:
var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;data source=NameDb.mdb;user id=Admin";
adoConnect.ConnectionString = conStr;
Adatok módosítása a Table1 táblában
Az adatbázis-művelethez használunk egy ADODB.RECORDSET objektumot, melyet létre kell hoznunk.
var adoSet = WScript.CreateObject("ADODB.RecordSet");
A WSH13.wsf állományban, a MODIFY azonosítóval bíró egységben módosítjuk a paraméterként megadott rekordot, a paraméterben megadott névre. Ennek módja a következő. Első lépés a kapcsolat megnyitása.
adoConnect.Open();
Meg kell nyitnunk a RecordSet objektumot a megfelelő SQL utasítással. Betöltjük a megadott ID-vel rendelkező rekordot, módosítjuk, majd frissítjük a tábla adatait.
var adoStr = "SELECT * FROM Table1 WHERE ID = " + ID;
adoSet.Open(adoStr,adoConnect,3,2,1);
adoSet.Fields("Name") = Name;
adoSet.Update
Végül bezárjuk a kapcsolatot.
adoConnect.Close();
A táblák lekérdezése
A script TABLELIST egységében kérdezzük le a táblák nevét, valamint a típusukat. Láthatjuk, hogy az adatbázis rendszertáblákkal is rendelkezik, melyeket szintén felsorolunk.
Ehhez meghívjuk a kapcsolat-objektum OpenSchema metódusát, majd a visszakapott eredményt feldolgozzuk.
var rsTables = adoConnect.OpenSchema(20);
A rsTables objektum Fields kollekcióját dolgozzuk fel, paraméterben megadva, hogy milyen információra van szükségünk. A TABLE_NAME karakterlánccal a tábla nevét, a TABLE_TYPE karakterlánccal a tábla típusát kaphatjuk vissza.
for (;!rsTables.EOF;rsTables.MoveNext()) 
{
  TableList = TableList + rsTables.Fields("TABLE_NAME") +  ": " + rsTables.Fields("TABLE_TYPE") + "\n";
}
Adott tábla oszlopainak lekérdezése
A parancsállomány COLUMNLIST egységében kérdezzük le a megadott tábla oszlopait. Ehhez az OpenSchema metódust más paraméterrel kell meghívni.
var rsTables = adoConnect.OpenSchema(4);
Majd lekérdezzük az oszloplistát a megfelelő táblánál.
for (;!rsTables.EOF;rsTables.MoveNext())
{
  if (rsTables.Fields("TABLE_NAME") == table) ColumnList = ColumnList + rsTables.Fields("COLUMN_NAME") + "\n";
}
A ComboBox kontrolban ki kell választanunk a kérdéses tábla nevét, majd a MŰVELET gombbal futtathatjuk a script-et.

Windows Script Host lehetőségei cikksorozat