ADO.NET snabdevači podacima (Data Provider-i)
ADO.NET data provider-i
ADO.NET ne poseduje jedinstveni skup tipova objekata koji komuniciraju sa različitim sistemima za upravljanje bazama podataka (DBMS). ADO.NET poseduje više skupova tipova objekata koji komuniciraju sa DBMS-om. Ove skupove tipova objekata nazivamo data provider-ima. Svaki od data provider-a optimizovan je za interakciju sa konkretnim DBMS-om. Prednost ovakvog pristupa je mogućnost pojedinačnih data provider-a da imaju mogućnost manipulacije objektima koji su specifični za posmatrani DBMS. Još jedna od prednosti je način komunikacije između data provider-a i DBMS-a. Naime, s obzirom da je svaki data provider optimizovan za rad sa konkretnim DBMS-om, on komunicira direktno sa DBMS-om tj. ne postoji međusloj koji bi prilagodio zahteve korisnika konkretnom DBMS-u.
Data Provider
Veza sa
bazom podataka realizuje se i održava pomoću ADO.NET komponente
Data Provider.
Data Provider
je u stvari skup komponenti koje zajedničkom funkcionalnošću
obezbeđuju efikasnu komunikaciju između baze podataka i aplikacije.
Microsoft.NET Framework
trenutno isporučuje neke vrste provajdera (snabdevača, isporučilaca)
podataka počev od: SQL Server .NET Data
Provider koji je dizajniran za
rad sa Microsoft SQL Serverom
i OleDb .NET Data Provider
koji povezuje aplikaciju sa drugim vrstama baza podataka.
(Ako ćete koristiti MySQL, treba da instalirate MySql Data Provider)
Svaki Data Provider sastoji se od (međusobno sličnih) sledećih komponentnih klasa.
Connection objekat omogućava konekciju sa bazom podataka
Command objekat sadrži informaciju o SQL SELECT upitu ili INSERT, UPDATE, DELETE naredbi koja se sprovodi nad bazom podataka.
The DataReader objekat (recordset) koji učitava podatke u direktnoj konekciji sa bazom podataka.
The DataAdapter objekat popunjava diskonektovani DatSet ili DataTable sa odgovarajućim podacima i ažurira podatke u DB.
Scenario pristupa podacima korišćenjem ADO.NET komponenti odvija se na sledeći način:
Objekat
Connection
uspostavlja vezu između baze podataka i aplikacije. Ta konekcija se
koristi za pristup bazi direktno pomoću Command
objekta ili pomoću objekta DataAdapter.
Command objekt obezbeđuje
realizaciju odgovarajućeg SQL upita u direktnoj komunikaciji sa
bazom držeći sve vreme pristupa konekciju otvorenom. U slučaju da
vraća više od jedne vrednosti Command
objekt vraća aplikaciji DataReader
objekt kao snabdevača aplikacije podacima. Podaci dobijeni na ovaj
način mogu biti direktno procesuirani od strane logike aplikacije.
Drugi način snabdevanja aplikacije podataka realizuje se indirektno
pomoću DataAdapter
objekta koji popunjava objekat DataSet.
Ažuriranje podataka u bazi
od strane aplikacije može se izvesti korišćenjem ili objekta
Command
ili pomoću objekta DataAdapter.
Dodatno:
Iako će se imena konkretnih
objekata svakog od konkretnih Data Provider objekata razlikovati
(npr. SqlConnection, OracleConnection, OdbcConnection ili
MySqlConnection), svi su izvedeni iz iste klase i implementiraju iste
interfejse pa je nakon savladavanja korišćenja jednog od data
provider-a relativno jednostavno koristiti sve ostale.
Microsoft .NET platforma poseduje niz ugrađenih data provider-a za različite DBMS-ove. Spisak ugrađenih data provider-a prikazan je u tabeli:
Data Provider |
Prostor imena (namespace) |
Biblioteka |
OLE DB |
System.Data.OleDb |
System.Data.dll |
Microsoft SQL Server |
System.Data.SqlClient |
System.Data.dll |
Microsoft SQL Server Mobile |
System.Data.SqlServerCe |
System.Data.SqlServerCe.dll |
ODBC |
System.Data.Odbc |
System.Data.Dll |
Oracle |
System.Data.OracleClient |
System.Data.OracleClient.dll |
Pored data provider-a koji su ugrađeni u .NET platformu, moguće je koristiti data provider-e koje obezbeđuju pojedinačni proizvođači besplatnih ili komercijalnih DBMS-ova poput SQLite, DB2, MySQL, PostgreSQL ili Sybase.
Pored predstavljenih prostora imena, .NET platforma poseduje skup dodatnih prostora imena koji svojim funkcionalnostima pripadaju skupu ADO.NET prostora imena. Neki od ovih prostora imena prikazani su u tabeli:
Prostor imena (namespace) |
Značenje |
System.Data |
Definiše osnovne ADO.NET tipove koje koriste svi data provider-i |
System.Data.Common |
Sadrži tipove koje dele svi ADO.NET data provider-i |
System.Data.Sql |
Sadrži tipove koji omogućavaju otkrivanje instanci MS SQL Server-a u lokalnoj mreži |
System.Data.SqlTypes |
Sadrži tipove podataka koje koristi Microsoft SQL Server |
Od svih ADO.NET prostora imena (namespace-a), System.Data je najopštiji. Svaka aplikacija koja želi da pristupa podacima korišćenjem ADO.NET-a mora koristiti klase definisane ovim prostorom imena.
System.Data sadrži klase koje su zajedničke za sve data provider-e. U sledećoj tabeli prikazani su osnovni članovi System.Data prostora imena.
Klasa |
Značenje |
Constraint |
Predstavlja ograničenje primenjeno na DataColumn objekat |
DataColumn |
Predstavlja jednu kolonu DataTable objekta |
DataRelation |
Predstavlja roditelj/dete odnos između dva DataTable objekta |
DataRow |
Predstavlja jedan red u DataTable objektu |
DataSet |
Predstavlja lokalnu kopiju podataka u memoriji klijentskog računara koji se sastoji od niza povezanih DataTable objekata |
DataTable |
Predstavlja lokalnu kopiju tabele baze podataka |
DataTableReader |
Omogućava čitanje podataka iz DataTable objekta red po red |
DataView |
Predstavlja pogled na tabelu baze podataka i koristi se za sortiranje, filtriranje, pretraživanje i izmenu podataka |