Data Set Data Relation

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 27

Visoka tehnika kola strukovnih studija

Kragujevac

SEMINARSKI RAD
Predmet:
PROJEKTOVANJE APLIKACIJA
NAD BAZAMA PODATAKA

Profesor:
Dr Zoran Mirovi

Sadraj

Student:
Jovan Verbi 116/2013

1. ARHITEKTURA APLIKACIJE..................................................................................................3
1.1 ARHITEKTURA APLIKACIJE U .NET-U..........................................................................3
1.2 Presentation Layer (PLA/GUI)..............................................................................................5
1.3 Business Logic Layer (BLL).................................................................................................6
1.4 Data Access Layer.................................................................................................................7
1.5 Data Base (DB)......................................................................................................................8
2. UVOD U ADO.NET....................................................................................................................9
2.1 ADO.NET..............................................................................................................................9
2.2 Pregled ADO.Net komponenti.............................................................................................10
2.3 Konektovani pristup bazi podataka.....................................................................................12
2.3 Diskonektovani pristup bazi podataka.................................................................................13
3. DATA BINDING.......................................................................................................................14
3.1 Data binding (osnove)..........................................................................................................14
3.2 ta reava i zato se koristi Data binding ?.........................................................................14
3.3 Binding source kontrola.......................................................................................................15
4. DATA SET.................................................................................................................................18
4.1 Datasetobjekt: uopsteno.......................................................................................................19
4.4 Uspostavljanje relacija izmedju tabela u datasetu...............................................................20
4.5 Dodavanje row-a u tabelu (ADD)........................................................................................21
4.6 Izmena postojeceg row-a u tabeli (UPDATE).....................................................................22
4.7 Brisanje row-a iz tabele (DELETE)....................................................................................22
4.8 Slanje dataseta nazad u bazu podataka (UPDATE).............................................................23
5. DATA RELATION.....................................................................................................................25
5.2 Konstruktori.........................................................................................................................25
5.3 Svojstva................................................................................................................................25
5.4 Metode.................................................................................................................................26
6. LITERATURA...........................................................................................................................27

1
Kragujevac 2016

1. ARHITEKTURA APLIKACIJE
1.1 ARHITEKTURA APLIKACIJE U .NET-U

Kada projektujemo i dizajniramo poslovne informacione sisteme primenjujemo vieslojnu


arhitekturu.
U praksi se moe identifikovati nekoliko stilova arhitekture:

Klijent/Server : predstavlja razdvajanje sistema u dve aplikacije: klijentska, koja se


nalazi kod korisnika i baza podataka sa aplikativnom logikom

Arthitektura zasnovana na komponentama: sistem ine funkcionalne ili logike


mponente
koje obezbeuju interfejs za spoljnu komunikaciju

Domenski voen dizajn: Objektno orjentisan pristup koji je fokusiran na modelovanje


sistema kreiranjemklasa identifikovanih u poslovnom domenu koji se modelira

N-slojeva / 3 sloja: troslojna arhitektura je jedna od najee korienih u praksi na


osnovu dosadanjeg iskustva. Troslojnu arhitekturu ine: prezentacioni, sloj poslovne
logike i sloj podataka.

Pojam arhitektura aplikacije u .Net-u odnosi se na tro slojnu arhitekturu.

P
B
D
LL
A

Data Base Managment Server

2
Kragujevac 2016

Slika 1: Sematski prikaz troslojne arhitekture

3
Kragujevac 2016

1.2 Presentation Layer (PLA/GUI)


Presentation Layer (Graphical User Interface GUI) , zovemo ga i sloj prezentacije, predstavlja
grafiki korisniki interfejs preko koga korisnik komunicira sa aplikacijama. Treba da bude to
jednostavnije dizajniran kako bi bil laki za upotrebu korisniku. Najzasluniji za njegov razvoj
su Apple Macintosh i Microsoft Windows operativni sistemi. Grafiki korisniki interfejs je
zamenio nepraktine i teke tekstualne interfejse ranijih kompjutera (npr. MS-DOS) sa relativno
intuitivnim sistemom, koji nije samo uprostio rukovanje kompjuterom, ve ga je uinio mnogo
prirodnijim i ugodnijim. Svi podatci koji se od baza preko ostalih layer-a obrauju treba da se
prikau na ovom layeru. Sastoji se iy komponenata GUI-a kao to su razni button-i, radio
button-i, textbox-ovi i drugi. U savremenim programima kao to su Visual Studio je jako
jednostavno kreirati ovaj sloj jer sadri mnotvo gotovih objekata koje samo treba podesiti,
povezati i nalepiti na formu.

Slika 2: Sloj prezentacije (Presentation layer)

4
Kragujevac 2016

1.3 Business Logic Layer (BLL)

Ovaj sloj je takoe poznat kao i sloj domena koji u softverskom inenjeringu predstavlja praksu
kreiranja reenja po delovima. On sprovodi poslovnu funkcionalnost aplikacije, tj. ona
predstavlja samu logiku aplikacije, klase sa funkcijama, kako e se podaci obraivati.
Jednostavnije reeno kreiranja klasa u zavisnosti od entiteta ili kreiranje deljenje objekata na
procese. Ovaj sloj ne sadri podatke ali sadri metode koje obrauju podatke koji se dopremaju
sa Presentation layera ili iz data access layera. On poseduje logiku za procesovanje, pretvaranje,
upravljanje podacima kao i uvanje postojanosti podataka. Kada se uitaju podaci iz
Presentacionog sloja alju se ovom layeru kako bi bili obraeni.

Slika 3: Sloj poslovne logike (Business logic layer)

5
Kragujevac 2016

1.4 Data Access Layer

DAL (Data Access Layer) ovaj sloj obezbeuje pristup ekstremnim sistemima kao to je baza
podataka. Primarna .NET tehnologija koja je ovde ukljuena je ADO .NET. Prilikom
kompunikacije sa bazom podataka, prikuplja samo potrebne informacije za obavljanje zadataka.
On je zaduen za konverziju podataka koji se uzimaju iz baze u vidu reda ili polja tabela i
pretvara ih u podatke koje mi moemo koristiti. Kreiranjem metoda mi moemo da poyovemo
bayu i da jasno definiemo sintaksom koje podatke da nam vrati iz baze. Takoe istim moemo i
da unosimo podatke u bazu. Kreiranjem metoda i klasa, olakan nam je posao jer iza toga lei
kompleksnost ovog sloja. Ranijih godina programeri su kreirali gotove standardne klase i metode
i spakovali ih u ADO.net. Ovaj sloj je u modernom programiranju dizajniran tako da se sa bilo
kojim tipom baze lako me povezati i manipulisati podacima.

Slika 4 : Data Access layer


6
Kragujevac 2016

1.5 Data Base (DB)


DB (Database) organizovana zbrika podataka koja je povezana sa programom i omoguava
mu korienje podataka. Svi podaci lee na DBMS (Data Base Menagement Server). Ona je
definisana u vidu tabela. Svaki odreeni entitet iz aprstrakcije predstavlja jednu tabelu koja
sadri njegove osobine. Baza podataka na raunaru je kontejner objekata. U njoj moete da
skladitite informacije o ljudima, proizvodima, porudbinama, kao i o bilo emu drugom. Veliki
broj baza podataka poinje da se kreira u vidu liste u programu za obradu teksta ili unakrsnoj
tabeli. Kako lista raste, pojavljuju se suvini i nedosledni podaci. Razumevanje podataka u formi
liste postaje oteano, a osim toga postoji ogranien broj naina pretraivanja ili izvlaenje
podskupova podataka u cilju redigovanja. Kada ovi problemi ponu da se pojavljuju, bilo bi
dobro prebaciti podatke u bazu podataka koja se kreira pomou sistema za upravljanje bazama
podataka (DBMS), kao to je program Office Access

Slika 5: Data base (baza podataka)

7
Kragujevac 2016

2. UVOD U ADO.NET
2.1 ADO.NET
ADO.NET je skup klasa za rad sa podacima. Snabdevai podataka su klase koje
obezbeuju mogunost 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. Prvi model pristupa podacima, DAO je napravljen za
lokalne baze podataka sa ugraenim Det motorom koji je imao probleme sa performansama i
radom. Posle njega je doao RDO i ADO koji su bili dizajnirani za klijent server arhitekturu ali,
uskoro je ADO prevaziao RDO. ADO je imao dobru arhitekturu ali kako se jezik menja tako se
menja i tehnologija. Sa ADO, svi podaci se nalaze u RekordSet objektu koji je imao probleme sa
implementacijom na mreu i slabim firevorkom. ADO je bio konektovan na bazu podataka to
znai da kada se uspostavi konekcija na bazu podataka konekcija ostaje otvorena sve dok se
aplikacija ne zatvori, ostavljanje otvorene konekcije za sve vreme rada aplikacije budi
zabrinutost za sigurnost baze podataka i za internet saobraaj. Takoe poto baze podataka
postaju sve vanije zbog sve veeg broja korisnika model konektovane baze podataka nas tera na
razmiljanje o njenoj produtkivnosti. Na primer, jedna aplikacija koja je konektovana na bazu
podatka radi lepo kada je konektovana na dva klijenta ali moe da radi loe kada je npr.
konektovano 10 klijenata a moe i ak da bude totalno neupotrebljiva kada je konektovana na
100 ili vie klijenata. Takoe, otvorena konekcija ka bazi podataka koristi resurse sistema do
maksimuma inei performanse sistema manje efektivnim. ADO.NET se nosi sa nekim od gore
pomenutim problemima tako sto odrava model diskonektovanog pristupa bazi podataka to
znai da kada aplikacija radi sa bazom podataka konekcija se otvara da bi uradila zahtev
aplikacije i zatvara se im se zahtev zavri. Takoe ako je baza apdejtovana konekcija se otvara
samo za period do se apdejt izvri i odmah se zatvara. Odravajui konekciju na minimalni
period, ADO.NET uva resurse sistema, daje maksimalnu sigurnost i ima manje uticaja na
performanse sistema Takoe ADO.NET koristi XML za interakciju sa bazom podataka i
konvertuje sve podatke u XML format za sve operacije vezane za bazu podataka inei sistem
efikasnijim.

8
Kragujevac 2016

2.2 Pregled ADO.Net komponenti


Data Architecture
Pristup podacima u ADO.NET arhitekturi oslanja se na dva osnovna skupa komponenti.
To je DataSet - komponenta koja smeta podatke na lokalnu memoriju raunara i
Data Provider skup komponenti koje ucestvuje u komunikaciji 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.
Objekti klase DataSet sastoje se od kolekcije DataTable objekata. Svaki DataTable objekat je
memorijska prezentacija pojedinane tabele. Struktura svakog DataTable objekta definisana je
DataColumns kolekcijom objekata koja opisuje kolone tabele kao i Constraint kolekcijom koja
opisuje ogranienja atributa tabele. Ove dve kolekcije, DataColumns i Constraint definiu emu
date tabele. Objekat DataTable takoe sadri DataRows kolekciju koja u sebi sadri aktuelne
podatke objekta DataSet. DataSet sadri i DataRelations kolekciju. Jedan DataRelation objekt
omoguava kreiranje relacija izmeu redova u jednoj tabeli sa redovima iz druge tabele.
Kolekcija DataRelations sadri set DataRelation objekata i na taj nain u potpunosti definie
relacije izmeu tabela u DataSet objektu.
Data Provider
Svaki Data Provider sastoji se od sledeih komponentnih klasa.
Connection objekt sadri sve podatke neophodne za realizaciju konekcije aplikacije sa bazom
podataka. Sve informacije neophodne za uspostavljanje komunikacionog kanala izmeu
aplikacije i baze podataka sadrani su u osobini ConnectionString objekta Connection.
Connection objekt takoe podrava izvravanje transakcija nad bazom podataka.
Command objekat sadri informaciju o SQL SELECT upitu ili INSERT, UPDATE, DELETE
naredbi koja se sprovodi nad bazom podataka. Command objekti sadre tri metode koje se
koriste za izvravanje razliitih naredbi nad bazom podataka:
ExecuteNonQuery. Izvrava naredbe koje ne vraaju informacije aplikaciji ve su usmerena ka
bazi (INSERT, UPDATE, ili DELETE).
ExecuteScalar. Vraa aplikaciji pojedininu vrednost pomou SQL upita (na primer GROUP
BY HAVING struktura) .
ExecuteReader. Vraa rezultate pomou DataReader objekta

9
Kragujevac 2016

The DataReader objekat (recordset) koji uitava podatke u direktnoj konekciji sa bazom
podataka. Ovaj objekat dri konekciju aplikacije sa bazom otvorenom sve vreme i ima
mogunost 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 ve se on vraa aplikaciji pomou ExecuteReader metode objekta
Command. Koristi se u sluajevima kada nije neophodno uvati redove tabela u lokalnoj
memoriji raunara ve ih logika aplikacije odmah koristi. Ovaj objekt dakle vraa jedan po
jedan red tabele aplikaciji u direktnoj vezi aplikacije i baze i omoguava najbri mogui transfer
podataka. Nedostatak je to zahteva ekskluzivan pristup Connection objektu za vreme trajanja
izvravanja DataReader objekta
The DataAdapter objekat popunjava diskonektovani DataSet ili DataTable sa odgovarajuim
podacima i aurira podatke u DB. DataAdapter je klasa koja omoguava 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 omoguava auriranje baze modifikovanim podacima.
DataAdapter nudi etiri svoje osobine koje reprezentuju odgovarajue SQL naredbe:

SelectCommand. Sadri tekst SQL naredbe (objekt) koji selektuje podatke iz baze
podataka. SQL naredba se izvrava pozivom Fill metode popunjavajui 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.

Scenario pristupa podacima korienjem ADO.NET komponenti odvija se na sledei


nain:
Objekt Connection uspostavlja vezu izmeu baze podataka i aplikacije. Ta konekcija se koristi
za pristup bazi direktno pomou Command objekta ili pomou objekta DataAdapter. Command
objekt obezbeuje realizaciju odgovarajueg SQL upita u direktnoj komunikaciji sa bazom
drei sve vreme pristupa konekciju otvorenom. U sluaju da vraa vie od jedne vrednosti
Command objekt vraa aplikaciji DataReader objekt kao snabdevaa aplikacije podacima.
Podaci dobijeni na ovaj nain mogu biti direktno procesuini od strane logike aplikacije. Drugi
nain snabdevanja aplikacije podataka realizuje se indirektno pomou DataAdapter objekta koji
popunjava objekat DataSet. Auriranje podataka u bazi od strane aplikacije moe se izvesti
korienjem ili objekta Command ili pomou objekta DataAdapter.

10
Kragujevac 2016

2.3 Konektovani pristup bazi podataka


Korienje 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 odgovarajui prefiks npr Sql) omoguava uspostavljenje
konekcije na odgovarajui izvor podataka. Klasa XxxCommand izvrava SQL komandu nad
odgovarajuim izvorom podataka. Klasa XxxDataReader slui za itanje podataka iz
odgovarajueg izvora podataka.

Slika 6: Konektovani pristup bazi podataka

11
Kragujevac 2016

2.3 Diskonektovani pristup bazi 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 poveava skalabilnost aplikacije.Podaci koji predstavljaju lokalnu
kopiju dela baze podataka nisu uvek aurni. Kada se podacima iz lokalne kopije podataka aurira
baza moe doi do konflikta.
Korienje 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 odgovarajuim izvorom podataka. XxxDataReader
ita podatke iz izvora podataka.

Slika 7: Diskonektovani pristup bazi podataka


Kragujevac 2016

12

3. DATA BINDING
3.1 Data binding (osnove)
Data binding predstavlja proces koji uspostavlja vezu izmeu korisnikog interfejsa aplikacije
(npr. forme, web stranice) i poslovne logike (najee nekog poslovnog entiteta, kao npr.
klasa Zaposlen, Vozilo itd )U praksi, kod Windows formi postoje dva tipa povezivanja: prosti i
kompleksni.Prosto povezivanje je sposobnost kontrole da se povee sa vrednosti u tabeli, tj. sa
jednostavnim tipom.Primer kontrola koji se povezuju sa jednom vrednu je TextBox ili Label.
Kompleksno povezivanje se odnosi na povezivanje vie podataka, npr ListBox, ComboBox,
DataGridView.

3.2 ta reava i zato se koristi Data binding ?


Kad pravimo windows aplikacije, one najee sadre forme koje korisnici koriste za unos
podataka koji se kasnije snimajuu neki izvor podataka (izvor moe biti baza podataka, XML fajl,
text fajl itd)

Ako npr. imamo formu za unos imena, prezimena i telefona Zaposlenog, da bismo podatke sa
forme preneli u objekat Zaposlenkoristili bismo sledei kd: za upisivanje podataka iz forme u
objekat
1 Zaposlen novi_zaposlen = new Zaposlen();
2 zaposlen. ImeIPrezime = imeIPrezimeTextBox.Text;
3 zaposlen.Telefon = telefonTextBox.Text;

13
Kragujevac 2016

za prikaz podataka na formi iz objekta


1 Zaposlen novi_zaposlen = new Zaposlen();
2 imeIPrezimeTextBox.Text = _zaposlen. ImeIPrezime;
3 telefonTextBox.Text = _zaposlen.Telefon;

3.3 Binding source kontrola


BindingSource kontrola
Kontrola BindingSource slui kao posrednik izmeu kontrole i izvora podataka. Ona
obezbeuje uobiajeni interfejs i funkcionalnost koja omoguava da se kontrola povee sa
izvorom podataka. Kada god se povezuje kontrola sa izvorom podataka u dizajn modu ili
korienjem wizarda , kreira se BindingSource kontrola. Instanca ove kontrole se moe dodati na
windows formu i manuelno. Prvi korak u konfigurisanju BindingSource kontrole je definisanje
njoj pridruenog izvora podataka, tj. njenog svojstva DataSource.
Definisanje izvora podataka za data source kontrolu.

14
Kragujevac 2016

Slika 9 : Definisanje izvora podatka za binding source


Na slikama je prikazan postupak povezivanja kontrole BindingSource sa izvorom podataka.
Uobiajeno je da se kao izvor podataka za ovu kontrolu specificira prethodno kreirani tipizirani
DataSet. Pored svojstva DataSource potrebno je specificirati i svojstvo DataMember, odnosno
specificirati tabelu u izvoru podataka sa kojom se povezuje BindingSource kontrola.
Ostala svojstva BindingSource kontrole
Svojstvo AlowNew odreuje da li kontrola koja je povezana sa izvorom podataka moe da
dodaje nove stavke. Svojstvo Filter definie filterski izraz koji odreuje koji e se podaci
prikazati u kontroli. Svojstvo Sort definie kolone po kojima e se vriti sortiranje, kolone su
razdvojene zarezima i mogu se koristiti kljune rei ASC i DESC.
Jednostavno povezivanje podrazumeva povezivanje kontrole na web formi sa jednom vrednou
iz baze podataka, npr. sadrajem neke elije tabele. Na slici je prikazano povezivanje Text
svojstva TextBox kontrole sa vrednou atributa CategoryID u jednom redu tabele.

15
Kragujevac 2016

16
Kragujevac 2016

4. DATA SET
Konstruktori:
Naziv
Data Set()
Data Set(String)
DataSetBoolean)StreamingContext,
(SerializationInfo,

Opis
Inicijalizuje novu instance Data Set klase
Inicijalizuje novu instance Data Set klase sa
datim imenom
Ovaj API podrzava koja nije neophodna da se
izvrsava direktno iz naeg koda.

Svojstva:
Naziv
CaseSensitive
DataSetName
DesignMode
Relations

Tables

Opis
Uzima ili postavlja vrednost koja odredjuje da
li je string osetljiv na mala i velika slova
Uzima ili postavlja ime Data Set
Postavlja vrednost koja pokazuje da li su
komponente u dizajn modu.
Uzima kolekciju relacija koje su povezane sa
tabelom i dozvoljava navigaciju od tabele
roditelj ka tabeli dete.
Uzima vrednost tabela u Data Set

Metode:
Naziv
Clear ()
Copy ()
Merge(DataRow[])
Merge(DataTable)
AcceptChanges()

Opis
Brie sve podatke iz DataSet
Kopira DataSet
Spaja red DataSeta
Spaja odredjeni DataSet sa njegovom emom
Prihvata izmene DataSeta kada se uita

Events:
Naziv
Disposed

Opis
17
Kragujevac 2016

Initialized

Javlja se kada se zavri inicijalizacija u Data


Setu
Javlja se kada se izvri spajanje

MergeFailed

4.1 Datasetobjekt: uopsteno.


Dataset objekt predstavlja objekt koji sluzi kao 'lokalna baza podataka' na klijentu. Podaci koje
dataset sadrzi nalaze se u memoriji klijenta i sve operacije nad podacima obavljaju se lokalno,
sto doprinosi smanjenju opterecenja samog servera.
Priroda rada sa bazama podataka dovela je do ugradjivanja dataset objekta u .NET: u vecini
slucajeva, klijenti se povezuju sa serverom u cilju citanja podataka, zatim sledi duzi period kada
je nepotrebno odrzavati konekciju sa serverom, a nakon lokalne izmene podataka u dataset-u
(dodavanje, izmena, brisanje) podaci se salju nazad serveru koji vrsi neophodne izmene u bazi
podataka. Dakle, dataset predstavlja skup podataka koji su OTKACENI (disconnected) od svog
izvora. Konekcija sa serverom se uspostavlja preko dataadapter objekta i traje samo kratko
vreme dok se podaci citaju, odnosno vracaju nazad u bazu.

4.2 Rad sa dataset objektom


Dataset objekt se sastoji od tabela, tabele od redova (rows), a redovi dalje sadrze kolone. Za
komunikaciju sa bazom podataka koristi se DataAdapter objekt zajedno sa dataset objektom.
Objekti mogu da se kreiraju na dva nacina: rucno (pisanjem koda) i koristenjem Windows Forms
Designer-a. Posto Windows Forms Designer u pozadini kreira kod koji se lako moze pogledati
(nalazi se u 'sekciji' Windows Forms Designer Generated Code) mi cemo koristiti Windows
Forms Designer za kreiranje objekata.
Da krenemo: u projekt dodati formu (Form1) i zatim na formu 'spustiti' SQLDataAdapter
(naravno, ukoliko ne koristite SQL Server nego neku drugu bazu podataka, recimo MS Access,
potrebno je koristiti OLEDBDataAdapter objekt). SQL ili OLEDBDataAdapter nalaze se u
Toolbox-u, u sekciji Data.
Pokrenuce se wizard u kome se prvo odredjuju potrebni parametri za konekciju sa bazom
podataka. U ovom primeru koristimo bazu NORTHWIND.
Nakon toga potrebno je odabrati tabelu sa kojom radimo, odnosno potrebno je definisati SQL
SELECT izraz. Ovo moze da se unese rucno ili pomocu Query buildera. Za nas primer koristimo
sledeci izraz:
SELECT * FROM Customers
Kada zavrsimo, Windows Forms Designer ce da generise potrebne objekte: Connection objekt i
DataAdapter objekt, te citav niz objekata koji sluze za manipulaciju sa podacima u Customers
tabeli: SQLSelectCommand, SQLInsertCommand, SQLDeleteCommand i
SQLUpdateCommand.
Nakon ovog na formu se moze dodati DataSet objekt (tip: UNTYPED Dataset) kao i DataGrid
18
Kragujevac 2016

objekt koji cemo koristiti za prikaz podataka.

4.3 Popunjavanje dataset-a podacima iz baze podataka


Na formu dodati dugme (button), promeniti mu ime u Refresh, a zatim dodati sledeci kod u klasu
Form1:
Code:
Private Sub Refresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Han
dles Refresh.Click
DataSet1.Clear() ' brisemo sve podatke iz dataset-a
Try
SqlDataAdapter1.Fill(DataSet1, "Kupci")
Catch ex As System.Data.SqlClient.SqlException ' ili OLEDBClient.OLEDBException
MsgBox(ex.Message) ' prikazujemo poruku ako dodje do greske
End Try
DataGrid1.DataSource = DataSet1.Tables("Kupci")
End Sub
Da vidimo:
SQLDataAdapter1.Fill(DataSet1, "Kupci")
otvara konekciju prema bazi, izvrsava SQL Select upit i popunjava DataSet1. U Dataset-u se
kreira tabela sa imenom "Kupci" koja sadrzi podatke. Konekcija sa serverom se automatski
zatvara.
Poslednjom linijom podatke iz te tabele prikazujemo u Datagrid objektu.
Na samom pocetku imamo poziv Clear metode kojom brisemo sve podatke iz dataseta kako ne bi
doslo do ponavljanja podataka unutar dataseta ako vise puta kliknemo na Refresh dugme.
E sad, dataset moze da sadrzi vise od jedne tabele. Jednostavno ako zelimo da dodamo jos neku
tabelu, potrebno je da dodamo novi Dataadapter objekt i da zatim izvrsimo popunjavanje
dataseta kao u prethodnom primeru npr.
Code:
Try
SqlDataAdapter1.Fill(DataSet1, "Kupci")
SqlDataAdapter2.Fill(DataSet1, "Narudzbe")
Catch ex As System.Data.SqlClient.SqlException

4.4 Uspostavljanje relacija izmedju tabela u datasetu


U datasetu je moguce odrediti kako se tabele odnose jedna prema drugoj (relations). Ovo se
postize kreiranjem DataRelation objekta koji definise koja kolona (column) u roditeljskoj
(parent) tabeli je povezana sa kojom kolonom u child tabeli. Najlakse je da to vidimo na primeru:
19
Kragujevac 2016

Code:
Dim parentCol as DataColumn
Dim childCol as DataColumn
Dim relCustOrder as DataRelation
dataadapter1_titles.Fill(dataset1,"Titles")
' u dataset dodajemo tabelu Titles i podatke iz iste
dataadapter2_publishers.Fill(dataset1, "Publishers") ' u dataset dodajemo tabelu Publishers i p
odatke iz iste
' definisemo relacije izmedju tabela:
parentCol = dataset1.Tables("Publishers").Columns("pub_id")
childCol = dataset1.Tables("Titles").Columns("pub_id")
relCustOrder = New DataRelation("Titles", parentCol, childCol)
dataset1.Relations.Add(relCustOrder)
Da bi uradili nesto 'pametno' sa ovom relacijom mozemo da se koristimo GetChildRows
metodom DataRows objekta. Npr.
Code:
Dim table As DataTable
Dim rows() As DataRow
Dim childRows() As DataRow
Dim i As Integer
table = dataset1.tables("Publishers")
rows = table.Select("pub_name = '" & strPubName & "'")
If rows.Length = 1 Then
childRows = rows(0).GETCHILDROWS("Titles")
For i = 0 To childRows.Length - 1
msgbox (childrows(i)("Title"))
Next
End If

4.5 Dodavanje row-a u tabelu (ADD)


Code:
Dim table As DataTable
Dim row As DataRow
table = dataset1.Tables.Item(0)
row = table.NewRow()
20
Kragujevac 2016

row("author_id") = "eer-4421-aad43"
row("author_name") = "Pera"
row("ugovor") = False
...
table.Rows.Add(row)

4.6 Izmena postojeceg row-a u tabeli (UPDATE)


Potrebno je da se pozicioniramo na zeljeni DataRow i zatim izvrsimo izmene. Npr.:
Code:
Dim i As Integer
Dim table As DataTable
Dim row As DataRow
table = dataset1.Tables.Item(0)
' prolazimo kroz sve Datarow-ove u tabeli i zaustavljamo se na zeljenom, koji onda menjamo
For i = 0 to table.Rows.Count - 1
row = table.Rows.Item(i)
If row("au_name") = "Pera" Then
row("ugovor") = True
End If
Next

4.7 Brisanje row-a iz tabele (DELETE)


Isto kao i apdejt datarow-a, samo sto kada se pozicioniramo na odredjeni record, izvrsavamo
DELETE metod.
Code:
table = dataset1.Tables.Item(0)
' prolazimo kroz sve Datarow-ove u tabeli i zaustavljamo se na zeljenom koji onda menjamo
For i = 0 to table.Rows.Count - 1
row = table.Rows.Item(i)
If row("au_name") = "Pera" Then
row.Delete()
End If
Next
21
Kragujevac 2016

4.8 Slanje dataseta nazad u bazu podataka (UPDATE)


Slanje dataseta nazad serveru gde se onda vrse izmene u bazi podataka izvodi se pozivanjem
.Update metode data adaptera. Kada se pozove UPDATE metod adaptera, proverava se RowState
svojstvo za svaki datarow u tabeli i na osnovu toga izvrsava odgovarajuca akcija (INSERT,
UPDATE ili DELETE). Povratna vrednost je broj row-ova koji su uspesno promenjeni.
Moguce je proveriti da li je uopste bilo promena i ako jeste tek onda pozvati Update metod
adaptera (.GetChanges dakle kreira novi Dataset objekt):
Code:
If dataset1.HasChanges() Then
adapter.Update(dataset1.GetChanges())
End If
odnosno, moguce je slati na promenu samo odgovarajuce datarow-ove:
Code:
adapter.Update(dataset1.GetChanges(DataRowState.Added Or DataRowState.Modified))
U MSDN-u se nalazi objasnjenje za DataRowState enumerator: Added, Modified, Deleted,
Detached, Unchanged.
Ponekad je vazno da se operacije izvrsavaju odredjenim redosledom, tada bi koristili nesto poput
(iz MSDN-a):
Code:
Dim updTable As DataTable = custDS.Tables("Customers")
' First process deletes.
custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.Deleted))
' Next process updates.
custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.ModifiedCurrent))
' Finally, process inserts.
custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.Added))
Takodje, vredi napomenuti i .HasErrors metod dataset-a koji proverava moguce greske
(pozeljno ih je ispraviti pre slanja dataset-a na apdejt).

22
Kragujevac 2016

4.9 Sortiranje i filtriranje


ove operacije se koriste da bi se dakle, sortirali i filtrirali podaci u postojecem dataset-u, bez
ponovnog kontaktiranja samog servera.
Code:
table = dataset.tables.item(0)
rows = table.Select("au_name > 'M'", "au_name ASC")
For i = 0 to rows.Length - 1
row = rows.GetValue(i)
Console.WriteLine(" {0} {1}",row("au_name"),row("au_phone"))
Next

23
Kragujevac 2016

5. DATA RELATION
5.1 DataRelation uopteno
DataRelation se koristi da napravi vezu izmeu dva DataTable objekta jedna ka drugima preko
DataColumn objekta. Na primer, u Kupac/Narudbina vezi, tabela kupac je roditelj, a tabela
narudbina je dete ove relacije. Ovo je slino kao primarni klju relaciji.
Relacije se stvaraju izmeu podudarne kolone u roditelj dete tabeli. to znai da DataTzpe
vrednost obe kolone mora biti identina.
Kada je DataRelation kreiran, on prvo mora da verifikuje da relacije mogu biti uspostavljene.
Nakon toga dodaje DataRelationCollection, on se odrava onemoguavanjem bilo koje promene
koje bi ga ponitile.

5.2 Konstruktori
Naziv
DataRelationDataColumn^)
DataColumn^,(String^,
DataRelation
(String^,<DataColumn^>array
^,<DataColumn^>^)
DataRelationString^,String^,
(String^,<String^>array
^,<String^>Boolean)^,

Opis
Inicijalizuje novu instancu DataRelation klase
koristei specifina DataRelation imena i
roditelj dete DataColumn objekte.
Inicijalizuje novu instancu DataRelation klase
koristei specifina DataRelation imena i
povezujui redove roditelj dete DataColumn
objekata
Ovaj konstruktor omoguava design podrku u
Visual Studio.

5.3 Svojstva
Naziv
ChildColumns
DataSet
ParentTable

Opis
Uzima dete DataColumn objekta ove relacije
Uzima DataSet kojem DataRelation pripada
Uzima roditelja DataTable od ovog
DataRelation

24
Kragujevac 2016

5.4 Metode
Naziv
GetType()
ToString()
Finalize()

Opis
Uzima tip od trenutne instance.
Uzima RelationName ukoliko postoji
Omoguava objektu da proba slobodne resurse
i da odradi CLEANUP operaciju (ienje)

25
Kragujevac 2016

6. LITERATURA
http://www.ucim-programiranje.com/2011/12/data-binding-osnove/
http://www.linkedu.tv/wpf-data-binding
http://www.link-elearning.com/lekcija-Uvod-u-ADO.NET_2038
https://support.office.com/sr-latn-rs/article/Osnove-baza-podataka-a849ac16-07c7-4a31-99483c8c94a7c204
http://www.link-university.com/lekcija/Uvod-u-ADO.NET--/2777
http://www.scribd.com/doc/110934193/Ado#scribd
https://msdn.microsoft.com/en-us/library/system.data.datarelation%28v=vs.110%29.aspx?cssave-lang=1&cs-lang=cpp#code-snippet-1
http://www.elitesecurity.org/t12371
https://msdn.microsoft.com/en-us/library/system.data.dataset%28v=vs.110%29.aspx

26
Kragujevac 2016

You might also like