baze podataka - lekcija 07.pdf
Transcript of baze podataka - lekcija 07.pdf
-
8/14/2019 baze podataka - lekcija 07.pdf
1/131
ADO.NET
Ciljevi lekcije
Upoznati se sa osnovama ADO.NET-a Upoznati se sa ADO.NET Data Provider-ima Upoznati se sa direktnim pristupom podacima korienjem ADO.NET-a (kreiranje konekcije ka bazi,kreiranje SQL komande, korienje DataReader objekta, parametrizacija upita) Upoznati se sa korienjem beskonekcionog sloja ADO.NET-a (korienje DataAdapter, DataSet,
DataTable, DataColumn i DataRow klasa)
NEOPHODNO PREDZNANJE
Neophodno predznanje
Rad u Windows okruenju Relacione baze podataka Osnove programskog jezika C#
UVOD
Veina trenutno prisutnih aplikacija vri obradu podataka. Najei nain skladitenja i korienja uskladitenihpodataka je upotreba baza podataka. U naprostijem sluaju, aplikacije koje pristupaju bazi podatakaomoguavaju svojim korisnicima da pretrauju podatke i prikazuju ih u tabelarnom obliku. Za pristup podaprojektanti aplikacija mogu koristiti razliite tehnologije.
U prolosti je razvijeno vie standardnih interfejsa za pristup bazama podataka. Svaki sistem za upravljbazama podataka (eng. Database Management System DBMS ) poseduje sopstveni programski interfejs (eng.application program interface-API ) ijim korienjem je mogue iz programskog koda odnosno iz aplikacije,vriti manipulaciju podacima u bazi podataka. Programski interfejs (API) predstavlja kolekciju objekmetoda koji omoguavaju pozivanje funkcija sistema za upravljanje bazama podataka (DBMS-a) programskog koda. Svaki DBMS poseduje svoj programski interfejs pa je bilo neophodno razviti standardpristup bazama podataka kako projektanti aplikacija ne bi morali da koriste razliite interfejse u zavisnosti odkonkretnog DBMS-a koji koriste.
Open Database Connectivity (ODBC) standard je razvijen sa ciljem da obezbedi naine za manipulacijupodacima u relacionim bazama podataka koji bi bili nezavisni od konkretnog DBMS-a. Microsoft je raOLE DB, objektno-orijentisani interfejs koji enkapsulira funkcionalnosti servera baza podataka. OLE Drazvijen ne samo za relacione baze podataka ve ima i mogunost korienje drugih tipova podataka. Ovajinterfejs nisu mogli koristiti projektanti koji su svoje aplikacije razvijali korienjem Visual Basic-a i script jezika pa je Microsoft razvio Active Data Object (ADO) interfejs. ADO koristi funkcionalnosti OLEinterfejsa i moe biti korien iz bilo kog programskog jezika.
ADO.NET je naslednik ADO-a i deo je Microsoft-ove .NET platforme. ADO.NET ima niz karakteristikaga razlikuju u odnosu na prethodne tehnologije za pristup podacima. Funkcionalnosti ADO.NET-a bazira
-
8/14/2019 baze podataka - lekcija 07.pdf
2/132
na korienju novog objekta pod nazivom DataSet. DataSet predstavlja lokalnu kopiju podataka pribavljenbaze podataka i moe sadrati vie od jedne tabele. Verovatno najbitnija karakteristika ovog objekta jeinjenicada prua mogunost manipulacije nad podacima bez potrebe da veza sa bazom podataka bude u svakotrenutku otvorena. Prethodne tehnologije za pristup podacima su pretpostavljale da je veza sa bazom podaaktivna za vreme izvrenja koda koji vri obradu podataka. Stalno aktivna konekcija dozvoljavala je trenizmene podataka i nadgledanje promena za vreme izvrenja koda. Problem je predstavljao ogranieni brojkonekcija koje je server baze podataka mogao da prui korisnicima pa su nakon zauzea svih dostupnihkonekcija ostali korisnici morali daekaju da se neka od konekcija oslobodi.
ADO.NET ima u potpunosti drugaiji pristup u odnosu na prethodnike. Konekcija sa bazom podataka se i daljkreira ali je mogue mnogo ranije osloboditi konekciju i uiniti je dostupnom ostalim korisnicima. Razlog jemogunost pribavljanja kopije podataka iz baze i skladitenja ovih podataka u DataSet objektu. Nakpribavljanja podataka, mogue je zatvoriti konekciju pre poetka obrade podataka. Naravno, nakon zavretkaobrade podataka izmenjena je jedino lokalna kopija podataka pa je neophodno ponovo otvoriti konekcijbazi podataka kako bi bilo mogue snimiti izmene.
Jo jedna razlika ADO.NET-a u odnosu na ADO je podrka ADO.NET-a za predstavljanje podatkorienjem XML-a (eng. eXtensible Markup Language). Podaci pribavljeni iz izvora podataka (relacione podataka) se serijalizuju korienjem XML-a. Ovakav nain serijalizacije podataka ima za posledicu daADO.NET nije ogranien firewall-om jer se komunikacija vri standardnim HTTP protokolom.
ADO.NET DATA PROVIDER-I
Za razliku od ADO-a, ADO.NET ne poseduje jedinstveni skup tipova objekata koji komuniciraju sa razliitimsistemima za upravljanje bazama podataka (DBMS). ADO.NET poseduje vie skupova tipova objekatakomuniciraju sa DBMS-im. Ove skupove tipova objekata nazivamo data provider-ima. Svaki od data prova optimizovan je za interakciju sa konkretnim DBMS-om. Prednost ovakvog pristupa je mogunostpojedinanih data provider-a da imaju mogunost manipulacije objektima koji su specifini za posmatraniDBMS. Jo jedna od prednosti je nain komunikacije izmeu 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-ompostoji meusloj koji bi prilagodio zahteve korisnika konkretnom DBMS-u.
Data provider je najlake posmatrati kao skup tipova objekata definisanih u odreenom prostoru imena (eng.namespace) koji imaju mogunost direktne komunikacija sa konkretnim DBMS-om. Svaki od data proviredposeduje skup klasa koje omoguavaju izvrenje osnovnih funkcionalnosti. Sve klase konkretnih data providea imaju zajednike roditeljske klase tj izvedene su iz istog skupa klasa i interfejsa, koje se nalaze System.Data.Common prostoru imena odnosno u System.Data prostoru imena. Osnovni objekti ADO.Data Provider tipa objekta prikazani su u tabeli 1.
-
8/14/2019 baze podataka - lekcija 07.pdf
3/133
Objekat Roditeljskaklasa
Implementira interfejs Znaenje
Connection DbConnection IDbConnection Omoguava otvaranje i zatvaranjekonekcije ka bazi podataka
Command DbCommand IDbCommand Predstavlja SQL upit ili uskladitenproceduru. Omoguava pristupDataReader objektu konkretnog dataprovider-aDataReader DbDataReader IDataReader, IDataRecord Omoguava itanje podataka korienjemkursora na serverskoj strani
DataAdapter DbDataAdapter IDataAdapter,IDbDataAdapter
Prenosi DataSet objekte izmeu klijenta iizvora podataka. Poseduje konekciju iskup od etiri osnovne operacije zaselektovanje, dodavanje, izmenu ibrisanje podataka u izvoru podataka
Parameter DbParameter IDataParameter,IDbDataParameter
Predstavlja imenovani parametar uparametrizovanom upitu
Transaction DbTransaction IDbTransaction Enkapsulira transakciju baze podatak
Tabela 1: Osnovni objekti ADO.NET Data Provider-a
Iako e se imena konkretnih objekata svakog od konkretnih Data Provider objekata razlikovati (nSqlConnection, OracleConnection, OdbcConnection ili MySqlConnection), svi su izvedeni iz iste klaimplementiraju iste interfejse pa je nakon savladavanja korienja jednog od data provider-a relativno jednostavno koristiti sve ostale. Struktura data provider-a .NET platforme prikazana je na slici.
Microsoft .NET platforma poseduje niz ugraenih data provider-a za razliite DBMS-ove. Spisak ugraenihdata provider-a prikazan je u tabeli 2.
Data Provider Prostor imena (namespace) Biblioteka OLE DB System.Data.OleDb System.Data.dllMicrosoft SQL Server System.Data.SqlClient System.Data.dll
Microsoft SQL Server Mobile System.Data.SqlServerCe System.Data.SqlServerCe.dllODBC System.Data.Odbc System.Data.dllOracle System.Data.OracleClient System.Data.OracleClient.dll
Tabela 2: Microsoft ADO.NET Data Provider-i
-
8/14/2019 baze podataka - lekcija 07.pdf
4/134
Pored data provider-a koji su ugraeni u .NET platformu, mogue je koristiti data provider-e koje obezbeujupojedinani proizvoai besplatnih ili komercijalnih DBMS-ova poput SQLite, DB2, MySQL, PostgreSQLSybase.
Pored predstavljenih prostora imena, .NET platforma poseduje skup dodatnih prostora imena koji svfunkcionalnostima pripadaju skupu ADO.NET prostora imena. Neki od ovih prostora imena prikazani tabeli 3.Prostor imena
(namespace)
Znaenje
System.Data Definie osnovne ADO.NET tipove koje koriste svi data provider-iSystem.Data.Common Sadri tipove koje dele svi ADO.NET data provider-i
System.Data.Sql Sadri tipove koji omoguavaju otkrivanje instanci MS SQL Server-a ulokalnoj mrei
System.Data.SqlTypes Sadri tipove podataka koje koristi Microsoft SQL ServerTabela 3: Dodatni ADO.NET prostori imena
Od svih ADO.NET prostora imena (namespace-a), System.Data je najoptiji. Svaka aplikacija koja epristupa podacima korienjem ADO.NET-a mora koristiti klase definisane ovim prostorom imenaSystem.Data sadri klase koje su zajednike za sve data provider-e. U tabeli 4 prikazani su osnovnilanoviSystem.Data prostora imena.Klasa Znaenje Constraint Predstavlja ogranienje primenjeno na DataColumn objekatDataColumn Predstavlja jednu kolonu DataTable objektaDataRelation Predstavlja roditelj/dete odnos izmeu dva DataTable objektaDataRow Predstavlja jedan red u DataTable objektuDataSet Predstavlja lokalnu kopiju podataka u memoriji klijentskog raunara koji se sastoji od
niza povezanih DataTable objekata
DataTable Predstavlja lokalnu kopiju tabele baze podatakaDataTableReader Omoguavaitanje podataka iz DataTable objekta red po redDataView Predstavlja pogled na tabelu baze podataka i koirsti se za sortiranje, filtriranj
pretraivanje i izmenu podataka
Tabela 4: Osnovnilanovi System.Data prostora imena
DIREKTAN PRISTUP PODACIMA KORIENJEM ADO.NET-A
Najlaki nain izvrenja svih operacija nad bazom podataka je direktno izvrenje svih operacija priemu se nevodi rauna o lokalnim kopijama podataka. Ovakav model je najblii tradicionalnom ADO programiranotklanja probleme konkurentnog izvrenja operacija nad bazom podataka koji se deavaju kada vie koriistovremeno izvrava operacije nad istim podskupom podataka. Ovakav nain izvrenja operacija nad bazompodataka je dobro reenje kada je potrebno proitati podatke ili izmeniti podake u jednom redu neke od tabelarelacione baze podataka. Ovakav pristup nije efikasan ukoliko je potrebno modifikovati vie razliitih redova iz jedne ili vie tabela.
-
8/14/2019 baze podataka - lekcija 07.pdf
5/135
Uobiajeni redosled operacija prilikom pribavljanja podataka korienjem ovakvog pristupa sastoji se izsledeih koraka:
1. KreiratiConnection, Command i DataReader objekte2. Otvoriti konekciju3. KoristitiDataReader za itanje podataka iz baze podataka
4. Zatvoriti konekciju
KREIRANJE KONEKCIJE KA BAZI PODATAKA
Pre pribavljanja ili izmene podataka neophodno je kreirati konekciju ka izvoru podataka. Broj raspolokonekcija je ogranien pa je potrebno drati konekciju otvorenom to je krae mogue. Konekcija ka izvorupodataka u ADO.NET-u enkapsulirana je klasomConnection. Prilikom kreiranja instance klase Connectionneophodno je definisatiConnectionString atribut ove klase.ConnectionString atribut predstavlja formatiraniniz karaktera sastavljen od niza ime/vrednost parova odvojenih meusobno karakterom ;. Ovaj atributnajee sadri informacije o imenu maine kojoj pristupamo, nainu autentifikacije korisnika, imenu bazekojoj pristupamo i sl. U nastavku ja dat primer kreiranja konekcije korienjem OLE DB data provider-a.
Kreiranje konekcije
OleDbConnection conn =new OleDbConnection();conn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\PREDUZECE.mdb";
Data Source ukazuje na ime servera na kome se nalazi baza podataka kojoj pristupamo.Initial Catalog predstavlja ime baze podataka kojojemo pristupati korienjem kreirane konekcije.Integrated Security ukazuje na nain autentifikacije korisnika. U posmatranom sluaju pristupa se korienjem Windowskorisnikog naloga. Alternativno, mogue je proslediti username i password naloga koji elimo da koristimo zpristup bazi podataka.
Pre korienja konekcije neophodno je eksplicitno otvoriti konekciju:
Otvaranje konekcije conn.Open();
Nakon ekplicitnog poziva funkcije za otvaranje konekcije, otvorena je i aktivna konekcija ka bazi podaNakon zavretka obrade podataka neophodno je zatvoriti konekciju pozivom funkcije za zatvaranje konekc
Zatvaranje konekcije
conn.Close();
Objekti klaseConnection poseduju skup atributa kojima je mogue upravljati tokom izvrenja transakcija nadbazom podataka i pribaviti informacije vezane za izvor podataka kome se pristupa.
-
8/14/2019 baze podataka - lekcija 07.pdf
6/136
KREIRANJE SQL KOMANDE
Nakon kreiranja konekcija ka bazi podataka, neophodno je izvriti SQL narebde za manipulaciju nad podaUkoliko koristimo SQL Server data provider, SQL naredbe se izvravaju korienjem instanci klaseOleDbCommand tj korienjem OleDbCommand objekta. Objekti klaseOleDbCommand predstavljajuobjektno-orijentisanu reprezentaciju SQL upita, imena tabela ili uskladitenih procedura. Dakle, komande mbiti razliitog tipa. Tip komande specificiran jeCommandType atributom objekta klaseOleDbCommand imoe imati neku od vrednosti izComandType enumeracije.
Enumeracija tipova komandi
public enum CommandType {
StoredProcedure,TableDirect,Text
}
Prilikom kreiranja komande mogue je navesti SQL upit kao argument konstruktora objekta ili korienjemCommandText atributa OleDbCommand objekta. Prilikom kreiranja komande neophodno je navestikonekciju kojae se koristiti za izvrenje komande. Konekciju je mogue navesti kao argument konstruktoraobjekta ili korienjemConnection atributaOleDbCommand objekta.
Kreiranje komande
OleDbConnection conn =new OleDbConnection();
conn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\PREDUZECE.mdb";
String strSQL ="Select * from RADNIK";
OleDbCommand newComm =new OleDbCommand();
newComm.Connection = conn;newComm.CommandText = strSQL;
Prosto kreiranje OleDbCommand objekta, ili bilo koje druge komande ako se koristi neki drugi data proumesto OLE DB data provider-a, ne znai da je SQL upit sadran u komandi automatski prosleen na izvrenje.
Objekat koji predstavlja komandu je nakon kreiranja samo pripremljen za dalju upotrebu. Najbitnije melanice OleDbCommand objekta prikazane su u tabeli.
Metoda Znaenje
Cancel() Ponitava izvrenje komande
ExecuteReader() Povratna vrednost funkcije je DataReader objekat izabranog data provider-a
ExecuteNonQuery() Izvrava komandu od koje se ne oekuje da kao povratne vrednosti daje podatke
ExecuteScalar() Varijanta ExecuteNonQuery() koja kao povratnu vrednost vraa jedan podatak
-
8/14/2019 baze podataka - lekcija 07.pdf
7/137
KORIENJE DATAREADER OBJEKTA
Nakon uspostavljanja konekcije ka bazi podataka i kreiranja SQL upita, neophodno je izvriti kreirani upitbi se pribavili podaci. Ukoliko se koristi OLE DB data provider, najlaki i najbri nain za pribavljanjepodataka je korienjeDataReader objekata.DataReader objekti mogu samo daitaju podatke i to red po redunapred. Imajui ovo u vidu, jasno je da je upotrebaDataReader objekata korisna samo u situacijama kada jekreirani upit SELECT SQL naredba.DataReader objekti posebno su koristi kada je potrebno brzo iterirati krozveliku koliinu podataka priemu nije potrebno posedovati lokalne kopije jednom oitanih podataka.DataReader objekti kreiraju se pozivomExecuteReader() metode kreirane komande. Nakon kreiranjeDataReader objekta, jedan red rezultujue tabele podataka pribavlja se korienjemRead() metode.
Ukoliko pretpostavimo da je kreirana konekcija ka bazi, da bi se oitali podaci iz baze podataka neophodno jenapisati SQL upit koji selektuje potrebne informacije, kreirati komandu kojae izvriti upit i kreiratiDataReader objekat kojie pribaviti podatke. U nastavkue biti prikazan deo programskog koda koji izvravaselektovanje svih redova iz tabele RADNIK u bazi podataka PREDUZECE.
Selektovanje podataka
OleDbConnectionconn = new OleDbConnection();
conn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\PREDUZECE.mdb";
StringstrSQL = "Select * from RADNIK";
OleDbCommandcomm = new OleDbCommand(strSQL, conn);
OleDbDataReaderreader;
conn.Open();
reader = comm.ExecuteReader();
while (reader.Read()) {
//programski kod koji vri obradu pribavljenih podataka }
conn.Close();
Pored izvrenja SQL upita koji vre selektovanje podataka, mogue je izvriti SQL upite koji vre dodavanje,izmenu ili brisanje podataka iz baze podataka. U nastavkue biti prikazan deo programskog koda koji vridodavanje novog radnika, izmenu podataka o radniku i brie podatke o radniku u tabeli RADNIK bpodataka PREDUZECE.
-
8/14/2019 baze podataka - lekcija 07.pdf
8/13
-
8/14/2019 baze podataka - lekcija 07.pdf
9/139
Izvrenje parametrizovane komande
OleDbConnection conn =new OleDbConnection();
conn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\PREDUZECE.mdb";
//kreiranje parametra
OleDbParameter param =new OleDbParameter();param.ParameterName ="@parameter";
param.Value ="Marko";
param.OleDbType =OleDbType.LongVarChar;
//kreiranje parametrizovanog upita
String strSQL ="Select * from RADNIK where Ime=@parameter";
OleDbCommand comm =new OleDbCommand(strSQL, conn);
//dodavanje parametra u kolekciju parametara komande
comm.Parameters.Add(param);
try {
conn.Open();
OleDbDataReader dr = comm.ExecuteReader();
while (dr.Read()){
//obrada podataka
}
}
catch (Exception exc){
}
finally {
conn.Close();}
-
8/14/2019 baze podataka - lekcija 07.pdf
10/1310
KORIENJE SLOJA SA RASKINUTOM VEZOM ADO.NET-A ZA PRISTUPPODACIMA
Korienje Connection, Command i DataReader objekata podrazumeva da je veza ka izvoru informacija(bazi podataka) otvorena za sve vreme trajanja obrade podataka. Prednosti i mane ovakvog naina pristupanjapodacima opisane su u prethodnim poglavljima. ADO.NET pored ovakvog naina pristupa podacima poseduje idrugaiji mehanizam, tzv. pristup podacima korienjem sloja sa raskinutom vezom.
Korienje sloja sa raskinutom vezom za pristup podacima zasnovano je na kreiranju lokalne kopije podakoji se uvaju u operativnoj memoriji klijentskog raunara. Korienjem tipova objekata izSystem.Data ADO.NET prostora imena mogue je kreirati lokalni model podataka kojie pored sirovih podataka posedovativeze izmeu tabela, ogranienja primenjena na kolone, primarne kljueve, poglede i sve druge karakteristikemodela podataka korienog za kreiranje baze podataka. Lokalni model podataka dozvoljava korisnicimkreiranje i izvravanje upita nad lokalnim podacima, njihovo filtriranje, sortiranje i snimanje u bazu podata
U veini sluajeva,ak i prilikom korienja sloja sa raskinutom vezom ADO.NET-a, neophodno je kreiratobjekte koji predstavljaju konekciju i komandu. Za pribavljanje i auriranje podataka se u sluaju korienjasloja sa raskinutom vezom za pristup podacima koristi tzv. data adapter objekat koji predstavlja instaDataAdapter klase. Za razliku od direktnog pristupa podacima, podaci pribavljeni korienjem data adapterobjekta se ne pribavljaju korienjemDataReader objekata. Data adapter objekti koristeDataSet objekte zaprenos podataka od i ka bazi podataka. SvakiDataSet objekat moe biti sastavljen od veeg brojaDataTable (tabela podataka) objekata koji poseduju kolekcijeDataRow (red tabele) iDataColumn (kolona tabele)objekata.
Data adapter objekat koji se koristi upravlja konekcijom ka bazi podataka automatski. Kako bi se pobolfunkcionalnost, data adapter objekate konekciju ka bazi drati otvorenom minimalni period vremena. Kada sna klijentskoj strani kreira DataSet objekat, data adaptere prekinuti konekciju sa bazom podataka ostavljajuipotpuno samostalnu kopiju podataka na klijentskom raunaru. Klijentska aplikacija moe nakon toganesmetano vriti izmene nad pribavljenom kopijom podataka. Ovaj proces prikazan je na slici.
Da bi kreirali lokalnu kopiju podataka korienjem data adapter-a iDataSet objekata, neophodno je najprekreirati konekciju ka bazi podataka i komandu na osnovu kojee biti kreirana lokalna kopija podataka. Unastavku je prikazan primer programskog koda koji vri uitavanje svih radnika iz tabele radnik korienjemOLE DB data adapter-a.
-
8/14/2019 baze podataka - lekcija 07.pdf
11/1311
Korienje DataAdapter objekta
OleDbConnection conn =new OleDbConnection();
conn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\PREDUZECE.mdb";
String strSQL ="Select * from RADNIK";
OleDbCommand comm =new OleDbCommand(strSQL, conn);OleDbDataAdapter adapter =new OleDbDataAdapter(comm);
DataSet ds =new DataSet();
try {
conn.Open();
adapter.Fill(ds,"Radnici");}
catch (Exception exc){
//obrada izuzetka }
finally {
conn.Close();}
Nakon kreiranja lokalne kopije podataka tjDataSet objekta, mogue je aurirati pribavljene podatke. Unastavku je prikazan primer programskog koda koji vri auriranje podataka o sivm radnicimaije je ime Milospostavljajui im platu na vrednost 30000.
Auriranje podataka
foreach (DataRow dr in ds.Tables["Radnici"].Rows){
if (dr["Ime"].ToString() =="Milos"){
dr["Plata"] = 30000;
}}
Mogue je takoe i obrisati neki od redova u lokalnoj kopiji podataka ili dodati novi red.
-
8/14/2019 baze podataka - lekcija 07.pdf
12/1312
Brisanje i dodavanje podataka
foreach(DataRow dr in ds.Tables["Radnici"].Rows){
if (dr["Ime"].ToString() =="Milos")
{
dr["Prezime"] ="Bogdanovi";
dr["SSlovo"] ="M";
dr["DatRodj"] ="1/1/2011";
dr["Adresa"] ="Bulevar Nemanjia 5/11";
dr["Plata"] = 20000;
DataRow row = ds.Tables["Radnici"].NewRow();
row["MatBr"] = 223456789;
row["Ime"] ="Milos";
row["Prezime"] ="Obilic";
row["SSlovo"] ="M";
row["DatRodj"] ="1/1/2011";
row["Adresa"] ="Bulevar Nemanjia 8/11";
row["Plata"] = 30000;
ds.Tables["Radnici"].Rows.Add(row);
}}
Sve izmene uinjene na lokalnoj kopiji podataka mogu se snimiti u bazu podataka korienjem Update()metodeDataAdapter objekta.
Snimanje podataka
OleDbCommandBuilder myOleDbCommandBuilder =new OleDbCommandBuilder(adapter);
adapter.MissingSchemaAction =MissingSchemaAction.AddWithKey;
int izmenjeniRedovi = adapter.Update(ds,"Radnici");
ADO.Net odrava informacije o originalnim i trenutnim vrednostima svih podataka koji se nalaze u Daobjektu. Prilikom auriranja podataka, ADO.NET trai redove koji u potpunosti odgovaraju originavrednostima podataka u redovima DataSet objekta i po pronalaenju ih zamenjuje novim redovima tj poda
-
8/14/2019 baze podataka - lekcija 07.pdf
13/13
iz redova lokalne kopije. U ovom trenutku lako je uoiti da e problem nastati ukoliko neki drugi korisnikizmeni podatke pre nego to naa aplikacija snimi izmenjene podatke. Naime, drugi korisnici mogu izmpodatke u bazi pa prilikom uporeivanja originalnih vrednosti lokalnih kopija podataka i podataka u bazi needoi do poklapanja. U ovakvim situacijama desie se izuzetak. Ovakve situacije mogue je predupreditikorienjemDataAdapter.RowUpdated dogaaja. Ovaj dogaaj deava se prilikom izvrenja svake insert,update ili delete operacije ali pre nego tio se desi izuzetak pa nam daje mogunost da spreimo deavanjeizuzetka.DataAdapter.RowUpdated dogaaj deava se u trenucima dok aplikacija radi sa DataSet objektom otvara novu konekciju ka bazi podataka pa je preporuljivo da programski kod koji se izvrava u ovim
situacijama bude to manji.
PITANJA
Pokuajte da odgovorite na sledea pitanja. Nakon toga pogledajte ponovo materijal u ovoj lekciji. Za svaktaan odgovor dodelite sebi 2 poena, za delimino taan 1, a za netaan 0. Pogledajte ponovo one delove lekcijeza koje ste imali 0 poena.
1. Na kom novom objektu se bazira najvei deo funkcionalnosti ADO.NET-a?2. ta je data provider?3. U kojim prostorima imena se nalaze roditeljske klase svih ADO.NET data provider-a?4. Navesti osnovnelanove System.Data prostora imena.5. U kojim situacijama je dobro koristiti direktan pristup podacima korienjem ADO.NET-a?6. Koji je uobiajeni redosled operacija prilikom direktnog pristupa podacima korienjem ADO.NET-a?7. Koja klasa enkapsulira konekciju ka izvoru podataka u ADO.NET-u?8. ta predstavlja ConnectionString atribut klase Connection?9. Ukoliko se koristi OLE DB data provider, koja klasa predstavlja objektno-orijentisanu reprezentaciju
SQL komande koju je neophodno izvriti?10. emu slue instance klase DataReader i na koji nain je mogue instancirati objekte ove klase?11. ta predstavljaju parametri SQL komande?12. Ukoliko se koristi OLE DB data provider, na koji nain je mogue ukazati na poziciju koju parametar
zauzima u SQL upitu?13. Naemu se bazira korienje beskonekcionog pristupa podacima korienjem ADO.NET-a?14. Koja se klasa koristi za instanciranje objekata koji omoguavaju pribavljanje i auriranje objekata?15. Koja klasa se koristi za instanciranje objekata koji vre prenos podataka od i ka bazi podataka kod
beskonekcionog pristupa ADO.NET-a?
ZADATAK
ADO.NET
1. Korienjem ADO.NET direktnog pritupa podacima pronai radnikaiji je matini broj 123456789 iizmeniti njegovo ime na Aleksandar. Za pristup podacima koristiti OLE DB data provider. Poda
radnicimauvaju se u tabeli RADNIK baze podataka PREDUZECE.2. Korienjem beskonekcionog sloja ADO.NET-a kreirati lokalnu kopiju podataka o svim radnicimpoveati svim radnicima platu za 15% i snimiti izmenjene podatke. Za pristup podacima koristiti ODB data provider. Podaci o radnicimauvaju se u tabeli RADNIK baze podataka PREDUZECE.