Anda di halaman 1dari 10

Seminarski rad ADO.

NET

ADO.NET
ADO.NET je skup klasa za rad sa podacima. Snabdevai podataka su klase koje obezbeuju mogudnost konektovanja na izvor podataka. Osnovni snabdevai podataka su SQL Server snabdevai podataka i OLE DB snabdevai podataka. Pri radu u ADO.NET okruenju koriste se prostori imena System.Data, System.Data.SqlClient, System.Data.OleDb, System.Data. SqlTypes, System.Xml.

Konektovani scenario
U ADO.NET-u postoje dva osnovna naina rada: konektovani i diskonektovani. Kod konektovanog scenarija resursi se uzimaju sa servera sve dok se konekcija ne zatvori. Korisnik je konstantno povezan na izvor podataka. Prednost konektovanog scenarija je da su podaci uvek aurni, konkuretni pristup resursima servera se lake kontrolie. Nedostatak konektovanog rada je da mora da postoji konstantna mrena konekcija, kao i mala skalabilnost aplikacije. Koridenje ADO.NET klasa u konektovanom scenariju U nastavku su prikazane osnovne klase koje se koriste u konektovanom scenariju. Redosled izvravanja operacija pri radu u konektovanom scenariju je : otvaranje konekcije, izvravanje komande, obrada zapisa u reader-u, zatvaranje reader-a i zatvaranje konekcije. Prostori imena i nazivi klasa Da bi se koristio SQL Server .NET snabdeva podataka potrebno je ukljuiti prostor imena System.Data.SqlClient. U ovom prostoru imena klase poinju sa prefiksom Sql, npr. SqlConnection. Da bi se koristio OLE DB .NET snabdeva mora se ukljuiti prostor imena System.Data.OleDb prostor imena. Klase poinju sa prefiksom OleDb, npr. OleDbConnection. Klase konektovanog scenarija Klasa XxxConnection (Xxx oznaava odgovarajudi prefiks npr Sql) omogudava uspostavljenje konekcije na odgovarajudi izvor podataka. Klasa XxxCommand izvrava SQL komandu nad odgovarajudim izvorom podataka. Klasa XxxDataReader slui za itanje podataka iz odgovarajudeg izvora podataka.

Diskonektovani scenario
U diskonektovanom scenariju podskup podataka iz baze podataka se kopira na lokalnom raunaru. Dok se korisnik nalazi u diskonektovanom radu ostali korisnici mogu da koriste konekciju. Diskonektovani rad povedava skalabilnost aplikacije. Podaci koji predstavljaju lokalnu kopiju dela baze podataka nisu uvek aurni. Kada se podacima iz lokalne kopije podataka aurira baza moe dodi do konflikta. Koridenje ADO.NET klasa u diskonektovanom scenariju U nastavku su prikazane osnovne klase koje se koriste u diskonektovanom scenariju. Redosled izvravanja operacija pri radu u diskonektovanom scenariju je: otvaranje konekcije, punjenje DataSet objekta podacima iz baze, zatvaranje konekcije, obrada podataka u DataSet-u, ponovo otvaranje konekcije, auriranje baze podataka podacima iz DataSet-a, zatvaranje konekcije. Klase konektovanog scenarija Klasa XxxDataAdapter klasa koristi Connection, Command i DataReader klase da bi popunila DataSet. XxxConnection objekat uspostavlja konekciju sa specificiranim izvorom podataka. XxxCommand objekat izvrava komandu nad odgovarajudim izvorom podataka. XxxDataReader ita podatke iz izvora podataka.

Arhitektura ADO.Neta
Pristup podacima u ADO.NET arhitekturi oslanja se na dve osnovne komponente. To je DataSet komponenta koja smeta podatke na lokalnu memoriju raunara i Data Provider skup komponenti koje posreduje u interakciji izmeu aplikacije i baze podataka.

DataSet
DataSet je diskonektovana prezentacija podataka iz baze u lokalnoj memoriji raunara koji je zaduen za izvravanje aplikacije. Moe se posmatrati kao lokalna kopija podataka iz baze, relevantnih za funkcionisanje aplikacije. DataSet je persistentan u lokalnoj memoriji tako da se podaci koje sadri mogu aurirati i manipulisati njima u saglasnosti sa logikom aplikacije nezavisno od baze podataka. Kada logika aplikacije to zahteva DataSet slui kao templejt za auriranje podataka na serveru. Objekat DataSet je memorijska predstava podataka iz baze. Ovaj objekat se moe posmatrati kao donekle pojednostavljena relaciona baza podataka, koja se sastoji od tabela i njihovih relacija. Objekat DataSet je uvek razdvojen od baze on ne zna odakle dolaze podaci koje sadri i u stvari moe da sadri podatke iz vie baza. Struktura DataSet-a DataTableCollection je kojekcija koja sadri nula ili vie objekata DataTable. DataTable se sastoji od 3 kolekcije: Columns, Rows i Constraints. Kolekcija Columns definie kolone jedne tabele. Njena svojstva definiu ime kolone, tip podataku u njoj i ostala svojstva kojim se definie ponaanje i prikaz podataka u datoj koloni. Indeksiranjem Columns svojstva pristupamo konkretnoj koloni. Kolekcija Rows, koja moe biti prazna, Sadri stvarne podatke. Row predstavlja niz podataka koji ine jedan zapis. Napr. Ime, prezime, telefon... U kolekciji Constraints obezbeuje integritet baze podataka. Sadri 2 vrste ogranienja: ForeignKeyConstraints osiguravaju da se red deteta ne moe ostaviti bez roditelja i UniqueConstraints omogudava ds se redovi u tabeli ne dupliraju, tj ne mogu postojati dva reda sa istom vrednodu primarnog kljua. Kolekcija DataRelationCollection sadri nula ili vie objekata DataRelation. To su u stvari relacije izmeu tabela. Ovaj objekat obezbeuje kretanje od nadreenog reda jedne tabele do redova iz druge tabele koji imaju veze sa njim.

Data Provider
Veza sa bazom podataka realizuje se i odrava pomodu ADO.NET komponente Data Provider. Data Provider je ustveri skup komponenti koje zajednikom funkcionalnodu obezbeuju efikasnu komunikaciju izmeu baze podataka i aplikacije. Microsoft.NET Framework trenutno isporuuje dve vrste provajdera (snabdevaa, isporuilaca) podataka: 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. Svaki Data Provider sastoji se od (meusobno slinih) slededih komponentnih klasa. Connection objekat omogudava konekciju sa bazom podataka Command objekat sadri informaciju o SQL SELECT upitu ili INSERT, UPDATE, DELETE naredbi koja se sprovodi nad bazom podataka.

The DataReader objekat (recordset) koji uitava podatke u direktnoj konekciji sa bazom podataka. The DataAdapter objekat popunjava diskonektovani DatSet ili DataTable sa odgovarajudim podacima i aurira podatke u DB. Scenario pristupa podacima koridenjem ADO.NET komponenti odvija se na slededi nain: Objekat Connection uspostavlja vezu izmeu baze podataka i aplikacije. Ta konekcija se koristi za pristup bazi direktno pomodu Command objekta ili pomodu objekta DataAdapter. Command objekt obezbeuje realizaciju odgovarajudeg SQL upita u direktnoj komunikaciji sa bazom dredi sve vreme pristupa konekciju otvorenom. U sluaju da vrada vie od jedne vrednosti Command objekt vrada aplikaciji DataReader objekt kao snabdevaa aplikacije podacima. Podaci dobijeni na ovaj nain mogu biti direktno procesuirani od strane logike aplikacije. Drugi nain snabdevanja aplikacije podataka realizuje se indirektno pomodu DataAdapter objekta koji popunjava objekat DataSet. Auriranje podataka u bazi od strane aplikacije moe se izvesti koridenjem ili objekta Command ili pomodu objekta DataAdapter.

Connection
Connection objekat sadri sve podatke neophodne za realizaciju konekcije aplikacije sa bazom podataka. Microsoft Visual Studio .NET nudi dva tipa Connection klasa: SqlConnection objekt koji je dizajniran specijalno za ostvarivanje konekcije sa Microsoft SQL Serverom od verzije 7.0 pa na dalje, kao i OleDbConnection objekt koji omogudava konekciju sa drugim tipovima baza podataka (na primer MS Access baze koje demo koristiti na vebama). Sve informacije neophodne za uspostavljanje komunikacionog kanala izmeu aplikacije i baze podataka sadrani su u osobini ConnectionString objekta Connection. Connection objekat takoe podrava izvravanje transakcija nad bazom podataka.

Command
I Command objekt je takoe zastupljen u dve varijante odgovarajudih klasa: SqlCommand i OleDbCommand. Moemo koristiti Command objekte za izvravanje razliitih SQL naredbi nad bazom podataka pomodu odgovarajude konekcije. Pomodu ovog objekta moemo koristiti za egzekuciju uskladitenih procedura na strani servera, izvriti SQL naredbe ili vratiti direktno aplikaciji kompletne tabele iz baze. Command objekti sadre tri metode koje se koriste za izvravanje razliitih naredbi nad bazom podataka: ExecuteNonQuery. Izvrava naredbe koje ne vradaju informacije aplikaciji ved su usmerena ka bazi (INSERT, UPDATE, ili DELETE). ExecuteScalar. Vrada aplikaciji pojedininu vrednost pomodu SQL upita (na primer GROUP BY HAVING struktura) . ExecuteReader. Vrada rezultate pomodu DataReader objekta.

DataReader
DataReader objekt vri direktan brzi pristup bazi. Ovaj objekt (recordset komponenta) dri konekciju aplikacije sa bazom otvorenom sve vreme i ima mogudnost uitavanja podataka iz baze u samo jednom prolazu bez iteracija (forward-only, read-only). Za razliku od ostalih ADO.NET komponenti nemogue je napraviti direktnu instancu ovog objekta ved se on vrada aplikaciji pomodu ExecuteReader metode objekta Command. Koristi se u sluajevima kada nije neophodno uvati redove tabela u lokalnoj memoriji raunara ved ih logika aplikacije odmah koristi. Ovaj objekt dakle vrada jedan po jedan red tabele aplikaciji u direktnoj vezi aplikacije i baze i omogudava najbri mogudi transfer podataka. Nedostatak je to zahteva ekskluzivan pristup Connection objektu za vreme trajanja izvravanja DataReader objekta.

DataAdapter
DataAdapter je klasa koja omogudava realizaciju diskonektovane ADO.NET arhitekture pristupa podacima. disconnected data access. Ovaj objekat realizuje sve elemente komunikacije izmeu baze podataka i objekta DataSet. DataAdapter popunjava objekte DataTable ili DataSet sa podacima iz baze pozivom svoje Fill metode. Nakon manipulacije navedenim podacima smetenim u lokalnoj memoriji DataAdapter pozivanjem svoje Update metode omogudava auriranje baze modifikovanim podacima. DataAdapter nudi etiri svoje osobine koje reprezentuju odgovarajude SQL naredbe: SelectCommand. Sadri tekst SQL naredbe (objekt) koji selektuje podatke iz baze podataka. SQL naredba se izvrava pozivom Fill metode popunjavajudi objekte DataTable ili DataSet. InsertCommand. Sadri tekst SQL naredbe (objekt) koji insertuje jedan red u tabelu. DeleteCommand. Sadri tekst SQL naredbe (objekt) koji brie jedan red iz tabele. UpdateCommand. Sadri tekst SQL naredbe (objekt) koji aurira podatke u bazi podataka.

DataAccess Layer
DataAccessLayer (DAL) je sloj raunarskog programa koji obezbeuje pojednostavljen pristup podacima smetenim u skladitenjima neke vrste, kao to je entitet relacione baze podataka. DataAccessLayer moe da vrati reference na objekat u kompletu sa svojim atributima, umesto reda polja iz tabele baze podataka.Ovo omogudava korisniku da stvori module na viem nivou apstrakcije.Ovakav model bi mogao biti realizovan stvaranjem klase podataka pristupnih metoda koje direktno pozivaju odgovarajudi skup baze podataka uskladitenih procedura.Druga primena bi bila potencijalno preuzimanje ili napii zapise na ili iz sistema datoteka.DAL krije kompleksnost osnovnog skladita podataka od spoljnog sveta. Umesto da koristite komande kao to su Insert, Delete ili Update, da bi se pristupilo odreenoj tabeli iz baze podataka, klase i neke uskladitene procedure mogu biti kreirane unutar baze podataka.Procedura

de biti pozvana iz metoda unutar klase, koja de vratiti objekat koji sadri traenu klasu.Komande Or, Insert i Update mogu izvriti funkcije kao to su Register ili Log in, koje se uvaju u DAL-u.Takoe, poslovne logike metode mogu se obeleiti u DAL-u. Tako, na primer, umesto da upit u bazi podataka nae sve korisnike iz nekoliko tabela, aplikacija moe da pozove metod iz DAL, te baze podataka. Aplikacije koje koriste DAL, mogu biti zavisni ili nezavisni serveri baza podataka.Ako DataAccessLayer, podrava vie tipova bazi podataka, aplikacija moe koristiti bilo koju bazu podataka sa kojom DAL moe da komunicira.U svakom sluaju, imati DAL obezbeuje centraliovano mesto za sve pozive u bazi podataka i na taj nain olakava prebacivanje aplikacije na druge baza podataka. Objektno relacioni alati, obezbeuju DataAccessLayer-u snimanje posle upisivanja.Objektno relacioni alati su popularni u web okvirima.

Business Logic Layer


Business logic layer (BLL), takoe poznat kao sloj domena softversko inenjerskoj praksi.Business logic layer je obino jedan od nivoa u multi arhitekturi.Ona razdvaja business logic layer od drugih modula kao to je data access layer.Business logic layer objekti mogu biti podeljeni u okviru poslovnih procesa i poslovnih entiteta.Business objekte obino sprovodi kontrolni obrazac.Oni sadre elemente podataka. Business entiteti, obino odgovaraju entitetima u logikom modelu domena, a ne fizikom modelu baze podataka.Entiteti domena su super set data layer entiteta ili data trasfer objekata. U sedam slojeva OSI modela umreavanja raunara, presentatin layer je esti sloj i slui kao prevodilac podataka za mreu.To se ponekad zove i sintaksni sloj. Presentation layer je odgovoran za isporuku i oblikovanje informacija na nivou aplikativnog sloja za dalju obradu ili izlaganje.To oslobaa aplikativni sloj od sintaksinih razlika u zastupljenosti podataka, u okviru krajnjeg korisnika sistema.

Presentation layer
Presentation layer je najnii sloj na kom programeri aplikacija mogu razmotriti strukturu podataka i prezentaciju, umesto jednostavnog slanja podataka u obliku datagrama ili paketa izmeu domadina.Ovaj sloj se bavi pitanjima reprezentacije, bilo da koriste Paskal metod ili C/C++ metode.Ideja je da sloj aplikacija moe da ukae na podatke koji de biti premeteni, a presentation layer de obaviti ostalo. Kodiranje se obino vri na tom nivou.Deifrovanje se, takoe moe vriti na presentation layer-u. Jednostavniji tipovi podataka, kao to je string, ali i komplikovaniji tipovi, standardizovani su na ovom nivou.Primeri su objekti u objektno-orijentisanom programiranju , ali i nain na koji se prenosi stream video.

U mnogo iroko koridenim aplikacijama i protokolima, ne pravi se razlika izmeu presentation i application layer-a.Na primer HTTP se posmatra kao aplication layer protokol, jer ima aspekte presentation layer-a, kao to su sposobnost da se identifikuje kodni raspored za pravilnu konverziju,a zatim se vri u aplication layer-u. U okviru semantike usluga OSI slojeva mrene arhitekture, presentation layer je tu da servisira zahteve iz primene sloja i servisnih zahteva.

Connection
Connection objekat Svaki Connection objekat implementira System.Data.IDbConnection interfejs. Najede koridene 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.

ConnectionString Sadrzi komponente za podesvanje konekcije. Ova podesavnja sadrze informacije gde se nalazi Baza podataka ConnectionTimeout Vreme cekanja da se ostvari konekcija. Podrazumevano 15 sekundi. Database Ime baze podataka koje se koristi za otvaranje konekcije. Ovo moze biti postavljeno u konekcionom stringu I moze da se menja sa Changedatabase( ) metodom.

Metode BeginTransaction( )- Program zapocinje transakciju baze podataka Changedatabase( ) Postavlja novu bazu podataka koja ce se koristiti za nove operacije. Kao alternative moze se izvrsiti SQL komanda na SQL server. Oracle baza ne podrzava ovu metodu

CreateCommand( )- Vraca provajder IdbCommand objekta koje je podesen za koriscenje konekcije.


Open( ) and Close( ) Konektovanje I Diskonektovanje na izvore podataka.

SQL Server ConnectionString Konekcija na SQL Server bazu podataka kreira se instanciranjem klase SqlConnection. Kreiranje SqlConnection objekta moe se izvriti pozivom podrazumevanog konstruktura. Zatim se preko svojstva ConnectionString definiu parametri konekcije koji se piu u obliku stringa. Drugi nain

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 odrenuje bazu podataka na SQL Serveru sa kojom se radi, user id predstavlja korisniko 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 sluaju windows autentifikacije korisnik se ne mora prijavljivati na SQL Server ved je dovoljno da bude korisnik domena na kome SQL server radi. Zbog toga korisnik koji ima windows nalog na domenu moe pristupiti SQL Serveru koristedi izraz Integrated Security=SSPI umesto specificiranja korisnikog imena i ifre. OLE DB konekcija Za izvor podataka koji nije SQL Server u konekcionom stringu se mora navesti parametar Provider. Za pristup Access bazi podataka moe 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.
string connString = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = D:\Music.mdb"; OleDbConnection konekcija = new OleDbConnection(connString);

Command
Command objekat dozvoljava direktan pristup podacima u bazi u konektovanom okruenju. Ovaj objekat sadri referencu na SQL komandu ili uskladitenu proceduru koje se mogu izvravati direktno. Objekat Command implementira IDbCommand interfejs.Ako se kao snabdeva podataka izabere SQL Server .NET snabdeva onda se odgovarajudi komandni objekat dobija instanciranjem klase SqlCommand. Ako se kao snabdeva podataka odabere OLE DB.NET snabdeva podataka onda se komandni objekat dobija instanciranjem klase OleDbCommand. Koristedi odgovarajudi Comand objekat mogude je izvravati Select, Insert, Update i Delete naredbe nad elementima baze podataka. Svojstva interfejsa IdbCommand Svojstvo CommandText ukljuuje tekst SQL komande ili naziv uskladitene procedure koje

treba izvriti. Svojstvo CommandType specificira o kakvom se tipu komande radi tj. da li je to Text odnosno napisana SQL komanda ili je to StoredProcedure odnosno uskladitena procedura. Svojstvo Connection ukazaje na Connection objekat koji se koristi za komuniciranje sa bazom podataka. Svaki komandni objekat moe imati nula ili vie parametara to se specificira svojstvom Parameters. -Svojstva interfejsa IdbCommand Svojstvo CommandText ukljuuje text SQL komande ili naziv uskladitene procedure koje treba izvriti . Svojstvo CommandType specificira o kakvom se tipu komande radi tj. Da li je to Text, odnosno napisana SQL komanda, ili je to StoredProcedure, odnosno uskladitena procedura. Svojstvo Connection ukazuje na Connection objekat koji se koristi za komuniciranje sa bazom podataka.Svaki komandni objekat moe imati nula ili vie parametara, to se specificira svojstvom Parameters.

Metode interfejsa IdbCommand Metoda ExecuteScalar izvrava komandu koja vrada skalarnu vrednost. Metoda ExecuteReader izvrava komandu koja vrada skup zapisa iz baze. Metoda ExecuteNonQuery izvrava komandu koja aurira bazu podataka ili menja strukturu baze podataka. Ovde se pod auriranjem podrazumeva i ubacivanje i brisanje podataka iz baze. Cancel - Ponitava izvrenje komande Auriranje baze podataka Za izvravanje Insert, Update, Delete komandi koristi se ExecuteNonQuery metoda SqlCommand objekta. Ova metoda vrada celobrojnu vrednost koja predstavlja broj vrsta u tabelama baze podataka na koje je auriranje uticalo.Procedura kreiranja odgovarajude konekcije i komandnog objekta je ista kao i u prethodnom nastavku. To se odnosi i na otvaranje i zatvaranje konekcije. Primer koriscenja Command sa metodom ExicuteNonQuery()
OleDbConnection konekcija = new OleDbConnection(connString); konekcija.Open(); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = konekcija; cmd.CommandText = String.Format("DELETE FROM Izvodjaci WHERE SifraIzvodjaca LIKE '{0}'", txtSifra.Text); cmd.ExecuteNonQuery(); konekcija.Close(); ds.Clear(); da.Fill(ds); MessageBox.Show("Uspesno ste obrisali podatke");

Anda mungkin juga menyukai