baze podataka - lekcija 07.pdf

download baze podataka - lekcija 07.pdf

of 13

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.