Od ranije nam je poznato da postoje različite baze podataka (Sql Server, MySQL, Sybase IQ, Oracle, DB2 …). Znamo i da je razvijeno više standardnih interfejsa za pristup bazama podataka. Svaki sistem za upravljanje bazama podataka (Database Management System – DBMS) poseduje sopstveni programski interfejs (application program interface – API) čijim korišćenjem je moguće iz programskog koda odnosno iz aplikacije, vršiti manipulaciju podacima u bazi podataka.

Programski interfejs (API) predstavlja kolekciju objekata i metoda koji omogućavaju pozivanje funkcija sistema za upravljanje bazama podataka (DBMS-a) iz programskog koda. Svaki DBMS poseduje svoj programski interfejs pa je bilo neophodno razviti standarde za pristup bazama podataka kako projektanti aplikacija ne bi morali da koriste različite intefejse u zavisnosti od konkretnog DBMS-a koji koriste.

 
Uvod u ADO.NET

ADO.NET je skup klasa za pristup i manipulaciju podacima koji su smešteni u izvorima podataka.

ADO.NET je tehnologija u .NET Framework-u koja omogućava rad sa podacima iz različitih izvora, kao što su relacione baze podataka, XML datoteke i drugi sistemi.

Snabdevači podacima (Data Providers) omogućavaju komunikaciju između aplikacije i baze podataka, pružajući alate za izvršavanje komandi, čitanje podataka, manipulaciju rezultatima i upravljanje konekcijama.

Šta je snabdevač podataka (Data Provider):

Snabdevač podacima (eng. Data Provider) je skup komponenti (klasa) koje omogućavaju komunikaciju između aplikacije i baze podataka. Oni pružaju objekte neophodne za:

  • Povezivanje sa bazom podataka.
  • Izvršavanje SQL upita i komandi.
  • Čitanje i zapisivanje podataka.

ADO.NET poseduje više skupova tipova objekata koji komuniciraju sa različitim sistemima za upravljanje bazama podataka (DBMS). Ove skupove tipova objekata nazivamo data provider-ima. Data provider je najlakše posmatrati kao skup tipova objekata definisanih u određenom prostoru imena (namespace) koji imaju mogućnost direktne komunikacije sa konkretnim DBMS-om. Svaki od data provider-a poseduje skup klasa koje omogućavaju izvršenje osnovnih funkcionalnosti.

Vrste ADO.NET snabdevača podacima

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 nekim drugim vrstama baza podataka.

Microsoft .NET platforma poseduje niz ugrađenih data provider-a za različite DBMS-ove.

Spisak ugrađenih data provider-a :

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.

(Ako ćete koristiti MySQL, treba da instalirate MySql Data Provider)

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.

Svaki Data Provider sadrži četiri ključne komponente:

  • 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.

  • DataReader objekat (recordset) koji učitava podatke u direktnoj konekciji sa bazom podataka.

  • DataAdapter objekat popunjava diskonektovani DatSet ili DataTable sa odgovarajućim podacima i ažurira podatke u DB.

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.


U nastavku su ilustracije primene nekih vrsta:

SQL Server:

Namenjen je za rad sa Microsoft SQL Server bazom podataka.

  • Klase:
    • SqlConnection – Povezivanje sa SQL Server-om.
    • SqlCommand – Izvršavanje SQL upita.
    • SqlDataReader – Čitanje rezultata upita.
    • SqlDataAdapter – Povezivanje baze sa DataSet-om.
  • Primer:
    SqlConnection connection = new SqlConnection(connectionString);
    SqlCommand command = new SqlCommand("SELECT * FROM Studenti", connection);

OleDb:


Koristi se za rad sa bazama koje podržavaju OLE DB interfejs (npr. Microsoft Access, Excel).
  • Klase:
    • OleDbConnection – Povezivanje sa OLE DB kompatibilnim bazama.
    • OleDbCommand – Izvršavanje SQL komandi.
    • OleDbDataReader – Čitanje podataka.
    • OleDbDataAdapter – Povezivanje sa DataSet-om.
  • Primer:
    OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand command = new OleDbCommand("SELECT * FROM Studenti", connection);

MySQL:

Pruža direktan način komunikacije sa MySQL serverom i koristi ADO.NET arhitekturu.

  • Klase:
    • MySqlConnection – Povezivanje sa MySQL Server-om.
    • MySqlCommand – Izvršavanje upita.
    • MySqlDataReader – Čitanje rezultata upita.
    • MySqlDataAdapter – Povezivanje baze sa DataSet-om.
  • Primer:
    MySqlConnection connection = new MySqlConnection(connectionString); MySqlCommand command = new MySqlCommand("SELECT * FROM Studenti", connection);

Oracle (ODP.NET):

Ovaj snabdevač je optimizovan za rad sa Oracle bazama podataka.

  • Klase:
    • OracleConnection – Povezivanje sa Oracle bazom podataka.
    • OracleCommand – Izvršavanje SQL komandi nad Oracle bazom.
    • OracleDataReader – Čitanje Čitanje podataka iz Oracle baze.
    • OracleDataAdapter – Povezivanje sa DataSet-om.
  • Primer:
    OracleConnection connection = new OracleConnection(connectionString); OracleCommand command = new OracleCommand("SELECT * FROM Studenti", connection);

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.


Šta je konekcija?

Veza do baze podataka u ADO.NET-u uspostavlja se preko komponente Connection. Konkretni objekat koji se koristi za konekciju zavisi od primenjenog posrednika koji se koristi za dobavljanje podataka (Data Provider). Međutim, važno je da zapamtite da sve klase za konekciju u ADO.NET-u implementiraju isti interfejs, a to znači da imaju zajednički skup metoda.

Jedan od načina za dodavanje nove konekcije je iz menija Tools, izborom opcije Connect to Database...

Drugi način je iz Server Explorer-a: desni klik miša i  Add Connection...

Za kreiranje konekcije vam je potrebno da prvo odaberete vrstu izvora podataka (Data Source), zatim naziv servera (Server name), po potrebi da unesete korisničko ime i lozinku, zatim da odaberete na koju bazu se povezujete ... ... izbor koji imate zavisi od opcija koje su postavljene na računaru na kojem radite).

Na času ćete dobiti na koju bazu da se povežete.

Konekciju obavezno testirajte, pritiskom na dugme Test Connection. Ukoliko test ne prođe, parametre konekcije niste postavili dobro i dalji rad sa podacima neće biti moguć.

Istovremeno, Server Explorer identifikuje ovu konekciju do baze. Možete lako prići do podataka o tabelama i drugim objektima koji su kreirani u bazi. Isto tako, koristeći Server Explorer, moguće je videti i sadržaj u tabelama. (desni klik miša - Retrieve Data ... dobićete sadržaj tabele)


Kreiranje konekcije ka bazi podataka

Pre pribavljanja ili izmene podataka neophodno je kreirati konekciju ka izvoru podataka. Broj raspoloživih konekcija je ograničen pa je potrebno držati konekciju otvorenom što je kraće moguće.

Prilikom kreiranja instance klase Connection neophodno je definisati ConnectionString atribut ove klase.

ConnectionString atribut predstavlja formatirani niz karaktera sastavljen od niza ime/vrednost parova odvojenih međusobno karakterom ‘;’. Ovaj atribut najčešće sadrži informacije o imenu mašine kojoj pristupamo, načinu autentifikacije korisnika, imenu baze kojoj pristupamo i sl. U nastavku je dat primer kreiranja konekcionog stringa korišćenjem Microsoft SQL Server data provider-a , Oracle data provider-a i MySQL data provider-a.

Microsoft SQL Server:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=localhost;Initial Catalog=TestDB;Integrated Security=SSPI");

Data Source ukazuje na ime servera na kome se nalazi baza podataka kojoj pristupamo. Initial Catalog predstavlja ime baze podataka kojoj ćemo pristupati korišćenjem kreirane konekcije. Integrated Security ukazuje na način autentifikacije korisnika. U posmatranom slučaju pristupa se korišćenjem Windows korisničkog naloga. Alternativno, moguće je proslediti username i password naloga koji želimo da koristimo za pristup bazi podataka.
 
Oracle
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "Data Source=192.168.1.190/lab.skola.edu.rs;User Id=21101;Password=21101";

 

MySQL

MySqlConnection conn = new MySqlConnection(connectionString);
conn.ConnectionString = "server=localhost;user id=root;database=baza1";

 

Microsoft Visual Studio ne dolazi sa ugrađenom podrškom za MySQL !
Prvo treba biti svestan da za MySQL treba instalirati MySqlConnector – preuzima se sa sajta proizvođača – da bi Visual Studio mogao da radi sa MySQL.
Drugo, od verzije Visual Studio 2015 pa nadalje, postoji i dodatak „MySQL for Visual Studio“ koji omogućava lakši rad ( pristup vizuelnim alatima )
I jedno i drugo se mogu postaviti na računar ako se koristi web installer.
Tek kada na računaru postoji instaliran MySqlConnector, može da se kreira konekcija korišćenjem MySql Data provider-a:

 

1.način:

MySqlConnection konekcija = new MySqlConnection("server=localhost;user id=ucenik;password=test;database=proba");

2.način:

MySqlConnection konekcija = new MySqlConnection();
konekcija.ConnectionString = "server=localhost;user id=ucenik; password=test; database=proba";

3.način:

string konekcioniString = "server=localhost;user id=ucenik;password=test;database=proba";
MySqlConnection konekcija = new MySqlConnection(konekcioniString);

Server ukazuje na ime servera na kome se nalazi baza podataka kojoj pristupamo, dok database predstavlja ime baze podataka kojoj ćemo pristupati korišćenjem kreirane konekcije. U posmatranom slučaju pristupa se korišćenjem username i password naloga koji želimo da koristimo za pristup bazi podataka.

Pre korišćenja konekcije neophodno je eksplicitno otvoriti konekciju:

Otvaranje konekcije

conn.Open();

Nakon eksplicitnog poziva funkcije za otvaranje konekcije, otvorena je i aktivna konekcija ka bazi podataka. Nakon završetka obrade podataka neophodno je zatvoriti konekciju pozivom funkcije za zatvaranje konekcije:

Zatvaranje konekcije

conn.Close();
 

Objekti klase Connection poseduju skup atributa kojima je moguće upravljati tokom izvršenja transakcija nad bazom podataka i pribaviti informacije vezane za izvor podataka kome se pristupa.

Konekcije i Obrada izuzetaka

Preporučuje se da se operacije nad bazom podataka koje mogu da dovedu do greške u program pišu unutar try bloka. Unutar try bloka vrši se i otvaranje konekcije pozivom metode Open objekta klase Connection. Samo kreiranje konekcije trebalo bi da bude izvan try bloka jer bi u protivnom ograničili oblast važenja ovog objekta. Ukoliko dođe do izuzetaka oni su objekti klase Connection. Poželjno je i definisanje finally bloka u kojem će se vršiti zatvaranje konekcije bez obzira da li je pri izvršavanju sql komandi došlo do grešaka ili nije.

try
{
  con.Open(); // (Izvrsavanje ADO.NET komandi) 
}
catch (MySqlException err)
{
  Console.WriteLine(err.ToString());
}
finally
{ 
  con.Close();
}

 

Bitno je da zapamtite da NIŠTA OD OVOGA NIJE STRAŠNO.

Slično je, bez obzira koju bazu koristili: I za SQL Server bazu i za MySQL bazu i za Access bazu vam treba otvaranje konekcije, za koju vam treba konekcioni string, povezivanje i smeštanje podataka negde, a na kraju da ZATVORITE konekciju. Za bilo koju bazu možete raditi direktno iz grafičkog okruženja i prigramski. Za bilo koju vam treba konektor za Visual Studio.

Razlika je u tome što je konektor za SQL Server ugrađen u Visual studio,  za Access može biti ugrađen samo ako imate i Access na kompu, a za MySQL morate sami da postavite konektor.

Last modified: Friday, 5 December 2025, 6:05 PM