Áttekintés
A Microsoft által elkészített névtér a Microsoft.Data.Odbc nevet viseli, és cikkünk írásakor a következő Webcímen volt elérhető, mely természetesen megváltozhatott: http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/001/668/msdncompositedoc.xml.
Letöltve az állományt (Odbc_net.msi) telepítenünk kell a .NET Framework alá. Az öntelepítő állomány erről gondoskodik, a használható .DLL állomány (Microsoft.Data.Odbc.dll), és a kapcsolódó dokumentáció alapértelmezésben a következő mappába kerül: %winroot%:\Program Files\Microsoft.NET\Odbc.Net\.
A telepített assembly bekerül a globális assembly-listába, így amikor referenciaként megadjuk alkalmazásainkban, akkor a globális palettáról kell kiválasztanunk, nem pedig valamilyen alternatív mappából.
A mellékelt dokumentáció tartalmazza a telepítésre, valamint a használatba vételre vonatkozó instrukciókat, illetve tartalmaz egy – az MSDN felépítésével megegyező szerkezetű – referenciát is a névtérben megtalálható osztályokról, ezek metódusairól, property-jeiről és néhány példát.
A telepítéssel kapcsolatban meg kell említeni, hogy rendelkeznünk kell telepített .NET Framework-kel a számítógépen, és ajánlatos rendelkeznünk a Microsoft Data Access Components (MDAC) 2.7-es verziójával is.
Az adott adatbázissal igen egyszerűen kapcsolat teremthető. Nem kell mást tenni, mint helyesen megadni a kapcsolat felépítésére hivatott OdbcConnection osztály ConnectionString property-jét, majd megnyitni a kapcsolatot, hasonlóan ahhoz, ahogy a System.Data.SqlClient névtér SqlConnection osztályának esetében tesszük. Lássunk néhány példát a lehetséges értékekre különböző adatforrások esetén. Az első egy Oracle adatforráshoz kapcsolódik:
Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;UID=odbcuser;PWD=odbc$5xr
A második egy Microsoft Access állományhoz:
Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\nwind.mdb
A harmadik egy Microsoft Excel állományhoz:
Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls
Az új névtérben egységesítették a hibakezelést is. Az adatbázis elérésekor bekövetkező hiba esetén egy OdbcException típusú kivétel generálódik.
Gyakorlati felhasználás
A mellékelt alkalmazásban egy Microsoft Access állományban található adatforrással létesítünk kapcsolatot ODBC-csatolón keresztül, valamint bemutatjuk, hogy a névtér osztályaival hogyan szúrhatunk be rekordokat az adatforrás ’Products’ nevű táblájába. A db.mdb Access-állományt az alkalmazás mappájában helyeztük el.
Miután referenciaként alkalmazásunkhoz csatoltuk a megfelelő assembly-t, gondoskodnunk kell arról, hogy ezt el is érjük:
...
using Microsoft.Data.Odbc;
Deklarálnunk kell azokat az objektumokat melyekkel a kapcsolat felépíthető, valamint a DML utasítás futtatható. Ehhez szükség van egy adatbázis-kapcsolat objektumra:
private OdbcConnection connect = new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + Application.StartupPath + "\\db.mdb");
Egy adapter objektumra, mellyel a már ismert módon feltölthető a logikai adattábla:
private OdbcDataAdapter ad;
És egy, a rekordok beszúrását végző SQL-utasítást futtató OdbcCommand objektumra:
private OdbcCommand Command = new OdbcCommand();
A program indulásakor, illetve egy-egy rekord beszúrása után frissítenünk kell a DataTable objektum tartalmát, hogy a Form DataGrid kontroljában mindig az aktuális táblatartalom legyen látható. Ennek érdekében a műveletet egy saját metódusba ágyaztuk (Fill), melyben először példányosítjuk az adapter objektumot a megfelelő lekérdező utasítással:
ad = new OdbcDataAdapter("SELECT * FROM PRODUCTS",connect);
...
Majd a .NET beépített osztályaiból már ismert módon, az objektum Fill metódusával feltöltjük az adott táblát:
Miután megadtuk a szerkesztőmezőben a rögzítendő értéket, és összeállítottuk az adott objektum CommandText property-jének átadandó karakterláncot, csak meg kell nyitnunk a kapcsolatot, és meg kell hívnunk az OdbcCommand osztály ExecuteNonQuery metódusát, mely elvégzi a rekord beszúrását:
Connect.Open();
Command.ExecuteNonQuery();
connect.Close();