C# - ADO.NET áttekintés

ADO.NET 1. rész

forráskód letöltése
Most induló cikksorozatunkban átfogó áttekintést kívánunk adni a .NET Framework rendszerben megvalósítható adatbázis-elérés lehetőségeiről, melyet a rendszer fejlesztői – sokatmondóan - az ADO.NET névvel azonosítottak. A sorozat részeiben feltárjuk a témához kapcsolódó alapfogalmakat, a kapcsolatok felépítéséhez szükséges osztályok jellemzőit, használatuk módját. A sorozat első számában áttekintjük az alapvető jellemzőket.
Alapismeretek
Az ADO.NET tulajdonképpen egy konzisztens elérési lehetőséget nyújt a különböző adatforrásokhoz, legyen az elérendő adathalmaz egy Microsoft SQL Server adatbázis, egy tetszőleges OLE DB csatolón keresztül elérhető adatbázis (például egy Oracle rendszer), vagy egy XML adatfolyam. A hangsúly azon van, hogy ezeket az adatforrásokat azonos interfészen (felületen) keresztül érhessük el, vagyis ugyanazt a fizikai komponenscsomagot használhassuk a különböző adatokkal összefüggő műveletekben.
Az ADO.NET komponensei segítségével tisztán elkülöníthető egymástól az adatokkal történő manipuláció, és azok megjelenítése. A komponensek ugyanis komplex objektumok, melyekkel elérhetjük a tetszőleges típusú adathalmazokat, elvégezhetjük az adatok módosítását, törlését, valamint visszakaphatjuk a lekérdezések eredményhalmazait. A kapott adathalmazokat ezt követően adatmegjelenítő objektumokkal tesszük láthatóvá. Ennek az elvnek köszönhetően könnyedén építhetünk fel többrétegű alkalmazásokat, melyeknek középső rétegében használhatjuk fel az ADO.NET univerzális lehetőségeit.
A .NET Framework osztálykönyvtárának System.Data névterében találjuk meg azokat az osztályokat, melyek segítségével a műveletek elvégezhetők. A névtér a kódjainkba egyszerűen beszerkeszthető, csupán a következő sort kell megadnunk az adott forrás-állomány fejlécében:
using System.Data;
Az osztálykönyvtár talán leghasznosabb tagja a DataSet osztály, mely lehetővé teszi, hogy tetszőleges mennyiségű és típusú adathalmazt tároljunk, rendezzünk, vagy manipuláljunk a memóriában, majd írjunk vissza a fizikai adatforrásba. Az osztályról részletesen lesz szó a sorozat későbbi számaiban.
A .NET Framework hasznos újdonsága, hogy minden eddiginél jobban támogatja az XML formátumú adattárolást, és mozgatást. Ezt az elvet az egyes objektumok szintjén is tetten érhetjük, ha tanulmányozzuk őket közelebbről. Megfigyelhető ugyanis, hogy az adatmanipulációkat lehetővé tevő metódusok mellett megtalálhatjuk azokat is, melyekkel egy adathalmaz XML állományba menthető, vagy onnan beolvasható.
ADO.NET objektumok
A .NET Framework fent említett névterében számtalan komponens található (melyek a Visual Studio.NET fejlesztőeszköz ToolBox-ában, a Data fül alatt is elérhetőek).
A komponensek között megtalálhatók azok, melyek a kapcsolat felépítését teszik lehetővé. Ezek az úgynevezett Data Provider-ek fizikai megvalósulásai, melyekkel összeköthetjük kódunkat a fizikai adattárolókkal. Ezek a következők:
  • SqlConnection
  • OleDbConnection
A komponensek következő csoportja az adatmanipuláció funkcionalitásával rendelkezik. Ezek pedig:
  • SqlCommand
  • OleDbCommand
  • SqlDataAdapter
  • OleDbDataAdapter
A megjelenítés, és a memóriában történő tárolást pedig a maradék két komponens teszi lehetővé.
  • DataSet
  • DataView
Az ADO.NET letisztult struktúrájának köszönhetően a DataSet objektum tetszőleges forrásból képes adatokat fogadni és tárolni. Egy komplett adatbázist reprezentálhat, melyben helyet kapnak a táblák (DataTable objektumok), a táblák közötti relációkat megvalósító objektumok (DataRelations). Képesek vagyunk megadni az egyes adatmezők típusát, a mező adattárolási jellemzőit, valamint kulcsjellemzőit. És mindezt minden eddiginél kevesebb kódolás árán vagyunk képesek elvégezni, hogy igazán a feladatra koncentrálhassunk, és ne vesszünk el a részletekben.

Az ADO.NET rendszer legfontosabb jellemzői tehát az egyszerűség, és az, hogy képes együttműködni a Web-alapú szolgáltatásokkal csakúgy, mint a lokális rendszereken futó Windows-os kliensekkel. Ezt úgy képzelhetjük el legegyszerűbben, hogy ugyanazt az objektumot kell használnunk minden alkalmazás-típus esetében, csupán a megjelenítés, és az adattovábbítás módja változik.
A kérés ugyanis érkezhet az Internetről, HTTP kérés formájában, vagy egy Web-szerviz szolgáltatás irányából a SOAP csatornán. A rendszerek közötti kommunikációt XML-alapú szabvány szabályozza. A megjelenítő komponensek feladata megfelelő formába önteni az adatmanipulációs rétegben tárolódó adatfolyamokat. Ezen funkciókról természetesen részletesen szólunk a sorozat későbbi cikkeiben.
ADO.NET rendszerkövetelményei
Az ADO.NET csomag a .NET Framework SDK része, és a következő platformokon használható:
  • Windows XP
  • Windows 2000
  • Windows NT 4 Service Pack 6-al
  • Windows Millennium Edition
  • Windows 98
Annak érdekében, hogy a .NET Framework Data Provider for SQL Server, vagy a .NET Framework Data Provider for OLE DB alrendszert használhassuk, feltétlenül telepítve kell legyen az adott rendszerben a Microsoft Data Access Components (MDAC) 2.6, vagy későbbi verziója.
Adatelérés
A System.Data névtér integráns kapcsolatban van a System.Xml névtérrel, illetve az azt tartalmazó System.Xml.dll assembly-vel, ennek megfelelően ha XML alapú műveletvégzésre kerül sor, akkor a System.Data névtér használatakor a System.Xml névtérre történő hivatkozást is el kell helyeznünk a forrás-állomány fejlécében.
using System.Xml;
A későbbi feladatmegoldásokban gyakran használjuk majd a DataSet és a DataReader (SqlDataReader, vagy az OleDbDataReader objektumok) objektumokat. Fontos azonban már most látni, hogy mire szolgál ténylegesen a DataSet objektum:
  • Többrétegű alkalmazások esetén az adatforgalom kezelésére, vagy a Web szervizekből kapott adatok fogadására
  • Memóriában történő átmeneti tárolásra (cache-elésre)
  • Hierarchikus, XML-alapú megjelenítése a kapcsolódó adathalmazoknak, XSLT Transzformációs eszközök használata az adatokon
  • Nem szükséges nyitott adatbázis-kapcsolat a fizikai adathalmazok felé, így a kapcsolat felszabadítható más kliensek számára
Míg tehát a DataSet objektumok mind írási, mind olvasási funkcióval rendelkeznek, míg a DataReader csoportba tartozó osztályokkal csak olvasni lehet az adott adatfolyamokat.
A fent említett adatelérési lehetőségeken túl elkészültek - a .NET Framework 1.1 verziójában már beépítve megtalálhatók – a más típusú adathalmazok elérését lehetővé tevő, vagy a meglévők elérését még testre szabott módon biztosító névterek, ezek a következők:
  • Microsoft.Data.Odbc
  • Microsoft.Data.OracleClient
Amennyiben a .NET Framework 1.0 verziójával rendelkezünk, és ezekre a névterekre lenne szükségünk, akkor ezek elérhetőek a Microsoft hivatalos Webhelyén, a következő címen:
http://msdn.microsoft.com/downloads
A sorozat ezt követő számaiban sorban megismerhetjük a névtér (névterek) osztályait, természetesen gyakorlati példákkal is szolgálunk a témában, az adatkapcsolat felépítésétől kezdve az adatok lekérdezésén át a megjelenítésig.

ADO.NET cikksorozat

ADO.NET áttekintés - ADO.NET 1. rész