C# - Adatbázis-kezelés parancsállományból

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

forráskód letöltése
A Windows Script Host témakörében egy új területre kalandozunk cikkünkben, nevezetesen az adatbázisok parancsállományokkal történő elérésének lehetőségeire. Parancsállományok segítségével sikeresen végezhetünk el adatbázis-műveleteket, legyen szó lekérdezésről, vagy adatfrissítésről. Cikkünkben egy példán keresztül bemutatjuk, miként valósítható ez meg a gyakorlatban.
A példához szükséges a WSH12 adatbázis, melyet a mellékelt Run_script.cmd BATCH állomány lefuttatásával hozhatunk létre. Csak arra kell ügyelni, hogy a WSH.sql parancsállomány a BATCH állománnyal azonos mappában legyen. A WSH12.sql parancsállomány 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A mellékelt példaalkalmazásban egy egyszerű műveletet fogunk elvégezni a WSH12.sql parancsállomány lefuttatása után létrejövő Table1 adattáblán. A tábla három rekordot tartalmaz, rekordonként két oszlopot.
A Form listájából kiválasztott azonosítóval kijelölhető rekord NAME oszlopában kicserélhetjük az adott értéket egy új, a WSH12.wsf parancsállománynak parancssori argumentumként megadott értékre. Az érték frissítése a MŰVELET gombbal indítható.
A művelethez két objektumra van szükségünk. Először létrehozzuk az SQL Server adatbázis-kezelőn létrehozott adatbázisunkhoz történő kapcsolódást lehetővé tevő objektumot. Ennek érdekében egy ADODB.Connection példányt kell létrehoznunk.
var sqlConnect = WScript.CreateObject("ADODB.Connection");
A kapcsolat-objektum esetén meg kell adnunk egy karakterláncban az objektum ConnectionString property-jét.
var conStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=WSH12;...";
sqlConnect.ConnectionString = conStr;
A másik szükséges objektum ADODB.Recordset típusú.
var sqlSet = WScript.CreateObject("ADODB.RecordSet");
Ez funkcionalitásában hasonlít a .NET osztálykönyvtárában DataSet néven megismert objektumra. Itt is meg kell adni egy SQL-utasítást, mellyel specifikáljuk a betöltendő adatok körét.
var sqlStr = "SELECT * FROM Table1 WHERE ID = " + ID;
A Recordset objektumba a WSH12.wsf parancsállomány első argumentumában megadott azonosítóval rendelkező rekordot töltjük, majd megváltoztatjuk a megfelelő mező értékét. Ehhez egy élő adatbázis-kapcsolatra van szükség.
sqlConnect.Open();
Megnyitjuk szerkesztésre a Recordset objektumot is.
sqlSet.Open(sqlStr,sqlConnect,3,2,1);
A rekord oszlopaira nevükkel hivatkozhatunk, így a NAME oszlop értékét egyszerűen megadhatjuk.
sqlSet.Fields("Name") = Name;
Majd frissítjük a tábla tartalmát a Recordset objektum visszaírásával.
sqlSet.Update
Végül bezárjuk a kapcsolatot.
sqlConnect.Close();
A művelet eredményeképpen frissül az adattábla aktuális rekordja. Erről meggyőződhetünk, ha a FRISSÍTÉS gombbal lekérdezzük az adattábla tartalmát újra.

Windows Script Host lehetőségei cikksorozat