Utisci korisnika

Pre nepunih mesec dana kupila sam paket kurseva: PRIPREME ZA POLAGANJE CAMBRIDGE INTERNATIONAL DIPLOMA IN BUSINESS. Obično neki opšti utisak formiramo na kraju, ali ja u ovom trenutku želim sa…

Veoma sam zahvalna na Vašem brzom odgovoru i želela bih da Vam se zahvalim na pažnji koju ste pokazali. Radica Nedelčev - Beograd


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: Core Windows Forms Technologies

Modul: Uvod u ADO.NET

Autor: Goran Aritonović

Naziv jedinice: Uspostavljanje konekcije sa bazom podataka


Materijali vezani uz ovu lekciju:

- Test uspostavljanje konekcije sa bazom podataka
- Uspostavljanje konekcije sa bazom podataka (PDF dokument)



U nastavku teksta su prikazane tehnologije za pristup bazi podataka hronološkim redom.


ODBC

ODBC (Open Database Connectivity) je prva tehnologija za pristup bazi podataka razvijena od strane Microsofta. Obezbeđuje C/C++ API (aplikacioni programski interfejs) niskog nivoa za pristup podacima iz baze. Teška je komunikacija sa nerelacionim izvorima podataka.

Slika 1: ODBC (Open Database Connectivity)


DAO

DAO (Data Access Objects) je skup COM (Component Object Model) interfejsa za pristup bazi podataka. DAO je jednostavniji za korišćenje nego ODBC API. Za pristup bazi koja nije Access DAO  interno koristi ODBC kao što je to prikazano na slici. Na taj način se uvodi jedan dodatni  sloj za pristup ODBC izvoru podataka.


Slika 2: DAO (Data Access Objects)


OLE-DB

OLE-DB(Object Linking and Embedding Database) tehnologija omogućava pristup kako relacionim tako i nerelacionim izvorima podataka. Da bi se koristila ova tehnologija potrebno je instalirati OLE-DB snabdevač podataka (data provider) koga obezbeđuje proizvođač baze podataka.

Slika 3: OLE-DB (Object Linking and Embedding Database)


ADO i ADO.NET

ADO je skup ActiveX komponenti koje obezbeđuju objektno orijentisani pristup ka OLE-DB. ADO se može shvatiti kao COM omotač oko OLE DB-a. ADO se može koristiti sa bilo kojim programskim jezikom koji podržava COM.  ADO.NET je nastao razvojem ADO-a i koristi sve prednosti  .NET okruženja.


.NET snabdevači podataka (Data Providers)

.NET snabdevač podataka je skup klasa koje se koriste za konektovanje na izvor podataka. Unutar .NET Framework-a nalaze se SQL Server .NET snabdevač podataka i OLE DB.NET snabdevač podataka. SQL Server .NET snabdevač podataka koristi Tabular Data Stream (TDS) protokol za slanje zahteva i primanje odgovora od SQL Server-a. Ima visoke performanse jer je protokol TDS veoma brz jer pristupa SQL Server-u direktno bez OLE DB  ili ODBC sloja. Klase SQL Server .NET snabdevača podataka nalaze se u prostoru imena System.Data.SqlClient. Ovaj snabdevač podataka se preporučuje za sve aplikacije koje rade sa SQL Server 7 verzijom ili više.


OLE DB snabdevači podataka

On komunicira sa izvorom podataka sa OLE DB provajderom specifičnim za taj izvor podataka.  Preporučuje se korišćenje ovog snabdevača podataka za aplikacije koje komuniciraju sa Accessom. Klase ovog snabdevača podataka nalaze se u prostoru imena System.Data.OleDb.


ODBC .NET snabdevač podataka

Isporučuje se uz .NET Framework 1.1. Drajveri koji su kompatibilni sa ODBC.NET snabdevačem podataka su: Microsoft SQL Server ODBC Driver, Microsoft ODBC Driver for Oracle, Microsoft Access (Jet) ODBC Driver. Klase ovog snabdevača podataka nalaze se u prostoru imena System.Data.Odbc. Ovi snabdevači podataka se koriste ako ne postoje neki drugi .NET snabdevač ili ODBC snabdevač.


Konekcije

Pre bilo kakvog rada sa bazom podataka potrebno je kreirati a zatim otvoriti konekciju. U ADO.NET-u se kreira objekat klase Connection.
Klasa System.Data.SqlClient.SqlConnection omogućava kreiranje konekcije na SQL Server bazu podataka. Klasa System.Data. OleDb.OleDbConnection  omogućava kreiranje konekcije na svaki izvor podataka sa pridruženim OLE DB provajderom.


Connection objekat

Svaki Connection objekat implementira System.Data.IDbConnection  interfejs. Najčešće korišćene  metode ovog interfejsa su Close( ) i Open( )  kao i property ConnectionString.


Svojstva interfejsa IDbConnection

U nastavku je dat tabelarni prikaz svojstava interfejsa IDbConnection. Svaki objekat implementira tj. realizuje metode ovog interfejsa.

Tabela 1: Svojstva interfejsa IDbConnection


 
Metode interfejsa IDbConnection

U nastavku su prikazane metode IDbConnection interfejsa.

Tabela 2: metode IDbConnection interfejsa


SQL Server - ConnectionString

Konekcija na SQL Server bazu podataka kreira se instanciranjem klase SqlConnection. Kreiranje SqlConnection objekta može se izvršiti pozivom podrazumevanog konstruktura. Zatim se preko svojstva ConnectionString definišu parametri konekcije koji se pišu u obliku stringa. Drugi način kreiranja SqlConnection objekta je da se konstruktoru ove klase prosledi string koji opisuje konekciju na SQL server bazu podataka. Konekcija na SQL server zavisi od tipa autentifikacije. U nastavku je prikazano kreiranje konekcionog stringa za SQL server autentifikaciju. Konekcioni string ima parametre DataSource koji predstavlja ime SQL Servera sa kojim se radi (npr. localhost za lokalni SQL Server), Initial Catalog određuje bazu podataka na SQL Serveru sa kojom se radi, user id predstavlja korisničko ime na SQL serveru a password predstavlja šifru tog korisnika. Pri kreiranju konekcionog stringa atributi se razdvajaju znakom ";".

SqlConnection con = new SqlConnection();
con.ConnectionString = "...";

SqlConnection con = new SqlConnection("...");


//SQL Server autentifikacija
SqlConnection con = new SqlConnection();
string konekcioniString = "Data Source=localhost;" +
"Initial Catalog=Northwind;user id=userid;password=password ");
con .ConnectionString = konekcioniString;


 
Konekcija kod Windows autentifikacije

U slučaju windows autentifikacije korisnik se ne mora prijavljivati na SQL Server već je dovoljno da bude korisnik domena na kome SQL server radi. Zbog toga korisnik koji ima windows nalog na domenu može pristupiti SQL Serveru koristeći izraz Integrated Security=SSPI umesto specificiranja korisničkog imena i šifre.

SqlConnection con = new SqlConnection();
string konekcioniString = "Data Source=localhost;" +
"Initial Catalog=Northwind;Integrated Security=SSPI");
con.ConnectionString = konekcioniString;


OLE DB konekcija

Za izvor podataka koji nije SQL Server u konekcionom stringu se mora navesti parametar Provider. Za pristup Access bazi podataka može se koristiti provajder Microsoft.Jet.OLEDB.4.0. Na slajdu je dat primer definisanja provajdera za konektovanje na SQL Server verziju 6.5 i Oracle bazu podataka.

OleDbConnection con = new OleDbConnection();
string konekcioniString = "Data Source= c:\Nortwdind.mdb;" +
"Provider=Microsoft.Jet.OLEDB.4.0");

SQL Server 6.5
Provider=SQLOLEDB;Data Source=London;Initial
Catalog=pubs;User ID=sa;Password=2389;

Oracle Server: 
Provider=MSDAORA;Data Source=ORACLE8I7;
User ID=OLEDB;Password=OLEDB;


Čuvanje konekcionog stringa u konfiguracionom fajlu

Naziv konekcije i vrednost konekcionog stringa se može čuvati u konfiguracionom fajlu. Konfiguracioni fajl se nalazi u bin folderu gde se nalazi i exe fajl aplikacije. Ime konfiguracionog fajla se kreira tako što se na puno ime exe fajla uključujući i ekstenziju dodaje  ekstenzija config. Ovaj način čuvanja parametara konekcije je moguć kod konzolnih i web aplikacija, stim što se kod web aplikacija radi o tzv. web.config fajlu. U nastavku je prikazano korišćenje konfiguracionog fajla za čuvanje parametara konekcije. U config fajl se dodaje ključ konekcioniString i njemu pridružuje vrednost konekcionog stringa. Da bi se koristio konfiguracioni fajl potrebno je uključiti prostor imena System.Configuration i onda pročitati vrednost ključa:

ConfigurationSettings.AppSettings["konekcioniString"]).

<configuration>
<appSettings>
<add key="konekcioniString"   value="server=localhost;database=Northwind;uid=sa;pwd=sifra;"/>
</appSettings>
</configuration>

 

Konekcije i obrada izuzetaka

Preporučuje se da se operacije nad bazom podataka koje mogu da dovedu do greške u programu pišu unutar try bloka. Unutar try bloka vrši se i otvaranje konekcije pozivom metode Open objekta klase SqlConnection. 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 SqlConnection. 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 (SqlException err)
{
     Console.WriteLine(err.ToString());
}
finally
{
     con.Close();
}


Connection Pooling

Kada se neka konekcija zatvori ona se stavlja u konekcioni bazen. Kada se pozove ponovo Open metoda provajder prvo pretražuje bazen i ako konekcioni objekat ne postoji u bazenu kreira novi, ako postoji koristi ga. Definiše se maksimalni broj konekcija u bazenu. Definiše se i Connection Lifetime što određuje dužinu života konekcije u bazenu.


Događaji konekcije

Objekat SqlConnection ima događaj StateChange koji se trigeruje kada konekcija menja stanje iz otvorenog u zatvoreno i obrnuto. Trenutno stanje konekcije se može iščitati korišćenjem propertija CurrentState, a prethodno stanje konekcije se iščitava korišćenjem propertija OriginalState. Ukoliko se pokuša da se ponovo otvori već otvorena konekcija generiše se izuzetak.

private void cnNorthwind_StateChange(object sender, System.Data.StateChangeEventArgs e)
{
     MessageBox.Show("Tekuce stanje: " + e.CurrentState.ToString() +  "  Prethodno stanje: " + e.OriginalState.ToString());
}


Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:2


Molimo Vas unesite svoje podatke i dobićete pristup besplatnim lekcijama.

Ime: 
Prezime: 
Email: