Upload
enela-sefer
View
242
Download
0
Embed Size (px)
Citation preview
7/25/2019 Pristup bazama podataka
1/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
PREDMET:Pouzdanost i kontrola kvalitete softvera NASTAVNI ANSAMBL:
AK. GOD. :2015/2016 PROFESOR:Denana onko ([email protected])
RESURS:Laboratorijska vjeba 10Pristup bazi ASISTENT:Emir Cogo ([email protected])DATUM OBJAVE:08.01.2016
Cilj vjebi:
Upoznavanje sa bazama podatakaOsnovni Pojmovi ERD i koncepti SQL
Instalacija i podeavanje MySQL baze podataka sa Visual Studio-om Rad sa bazom iDataGridViewkontrolom
Napomena: Prije izrade vjebe je obavezno proitati predavanja vezana za tematsku jedinicu
Pristup Bazama Podataka.
LABORATORIJSKA VJEBA 10
Pristup bazama podataka (MySQL) - AiE
Upoznavanje sa bazama podatakaOsnovni pojmovi
Podatakje poznata injenica koja moe biti zapisana i koja ima implicitno znaenje. Podacise mogu uvati na razne naine: buene paprine kartice ili trake (neelektronsko uvanje),diskovi, trake, CD-ovi, DVD-ovi itd. Pri elektronskom snimanju, podaci se obino organizujuu datoteke,a datoteke mogu biti klasine(binarne, XML i sl.) i datoteke koje su organizovane
u baze podataka. Shodno tome, baza podatakapredstavlja jedan aspekt tj. apstrakciju realnogdijela svijeta. Promjene u tom dijelu svijeta se reflektuju na bazi podataka. Sama baza
podataka je dizajnirana, izgraena i napunjena sa podacima za specifinu namjenu.
DBMS(eng. skr. DataBase Managment System) ili sistem za upravljanje bazom podataka je
skup porgrama koji omoguuju korisniku da kreira i odrava bazu podataka. To je softverskisistem generalne namjene koji omoguava definisanje, konstukciju i manipulisanje nad
podacima smjetenim u bazu za razliite svrhe. Definisanje baze ukljuuje: specificiranjetipova podataka, strutkuru podataka, uslova koji podaci moraju da zadovolje. Postoje razliite
baze podataka i to: hijerarhijske, mrene, relacione, objektno-relacione i objekte. Danas sunajkompaktnije i najvie koritene(99%) relacione, pa e se i ovaj predmet baviti tom vrstom
baza podataka. Osnovni pojmovi vezani za ove vrste baza podataka su :
Entitetobjekat ili koncept iz realnog svijeta (Student,Zaposleni, Odsjekitd.) Atributosobina entiteta i ima svoj naziv i tip (Ime,Prezime, Plaa, Ocjenaitd.) Vezaveza ili odnos izmeu entiteta (Student je upisanna fakultet ili zaposleni radi
na fakultetu itd.)
7/25/2019 Pristup bazama podataka
2/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
ERD i koncepti SQL
ERD(eng. skr. Entity Relationship Diagram) predstavlja nain modeliranja baza podataka tj.njihove strukture. Prikaz jednog takvog dijagrama je dat u nastavku:
SQL (eng. skr. Structured Query Language) je jezik posebne namjene dizajniran za
upravljanje podacima koji su smjeteni u relacionim bazama podataka. Uglavnom se sintaksaovih jezika minorno razlikuje u ovisnosti koji se DBMS koristi (MySQL, Oracle, PostgreSQL
itd.), ali je osnova uglavnom ista. Komande i njihova sintaksa su dati u nastavku:
SELECTPrikaz podataka iz baze:SELECT [*]ili [ime_kolone], [ime_kolone]
FROM [ime_tabele_u_bazi]ili [ime_baze.ime_tabele_u_bazi]
WHERE [ime_kolone zadovoljava neki uslov] // npr. id = 1 ili ime LIKE 'Haris'
ORDER BY [ime_kolone_po_kojoj_sortiramo] ASC ili DESC;
INSERTUnos novih redova:INSERT INTO [ime_tabele(kolona1, kolona2, kolona3...)]
VALUES [(vrijednost_za_kolonu1, vrijednost_za_kolonu2, vrijednost_za_kolonu3)];
UPDATEPromjena postojeih podataka:UPDATE [ime_tabele]
SET [kolona1=vrijednost1, kolona2=vrijednost2, kolona3=vrijednost3...]
WHERE [ime_kolone zadovoljava neki uslov]; // npr. id=3 za specifinu osobu
DELETEBrisanje podataka:DELETE FROM [ime_tabele]
WHERE [ime_kolone zadovoljava neki uslov]; // npr. id=5 za specifinu osobu
7/25/2019 Pristup bazama podataka
3/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Instalacija i podeavanje MySQL baze podatakasa Visual Studio-om
Za ispravno podeavanje Microsoft Visual Studio i MySQL baze podataka potrebno je skinutii instalirati sljedei softver :
1.
WAMP server :http://www.wampserver.com/en/za MySQL bazu podataka.2. MySQL Installer :https://dev.mysql.com/downloads/installer/
Napomena:U sluaju da installer ne prepoznaje nita i nudi vam samo opciju upgradebez ijedne ponuene stavke, zasebno skinite MySQL Connector/NET :
https://dev.mysql.com/downloads/connector/net/6.9.html
3. Ako vam u procesu kreiranja konekcije ne bude ponuena opcija za kreiranje naMySQL bazu podataka, instalirajte sljedei plugin:http://cl.ly/JqXO i on e popravitistvari.
http://www.wampserver.com/en/http://www.wampserver.com/en/http://www.wampserver.com/en/https://dev.mysql.com/downloads/installer/https://dev.mysql.com/downloads/installer/https://dev.mysql.com/downloads/installer/https://dev.mysql.com/downloads/connector/net/6.9.htmlhttps://dev.mysql.com/downloads/connector/net/6.9.htmlhttp://cl.ly/JqXOhttp://cl.ly/JqXOhttp://cl.ly/JqXOhttp://cl.ly/JqXOhttps://dev.mysql.com/downloads/connector/net/6.9.htmlhttps://dev.mysql.com/downloads/installer/http://www.wampserver.com/en/7/25/2019 Pristup bazama podataka
4/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Kada smo instalirali sve to nam je potrebno, kreirajmo poe tnu bazu podataka. Kadapokrenete WAMP server u desnom oku ekrana e vam se pokazati ikonica na koju trebatekliknuti i izabrati opciju phpMyAdmin. To je vizualni browser alat za kreiranje tabela i
njihovu manipulaciju.
Kada otvorimo phpMyAdmin, otvorit e nam se poetna stranica i da bi smo kreirali novubazu podataka potrebno je unijeti njeno ime i kodiranje karaktera. Za koritenje naihkaraktera odabrati utf8_slovenian_cikodiranje.
7/25/2019 Pristup bazama podataka
5/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Nakon toga kreirajmo prvu tabelu. Za na primjer to e biti tabela Studentisa 5 kolona.
Kada smo definisali strukturu tabele, sada prelazimo na definiciju strukture njenih kolona. U
prvom, Name dijelu unosimo imena kolona. Unijeli smo ID kao jedinstvenu ifru, ime iprezime, datum rodjenja i godinu studija. Takoe smo postavili i tipove tih kolona. Ako je upitanju cijeli broj tip je INT, ako je u pitanju tekstualno polje tip je VARCHAR, a ako je u
pitanju datum tip je DATE. U drugom,Lengthdijelu unosimo duinu prije svega tekstualnihpolja. Sa slike vidimo da ime i prezime mogu sadravati tekst do 30 karaktera. Za INT i
DATE ova polja nije potrebno postavljati. U treem, AI dijelu to je skraeno za AutoIncrement, imamo checkboxkojeg ako ekiramo, ta vrijednost tog polja (kod nas je to ID) eii od 0 i za svaki red e se sama postavljati uveana za 1 u odnosu na prethodnu vrijednost.Ostala polja nije potrebno mijenjati. Kliknemo na Savei imamo kreiranu tabelu. Sada nam jo
preostaje da je popunimo iz forme koju emo kreirati u nastavku.
7/25/2019 Pristup bazama podataka
6/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Kreirajmo formu sljedeeg izgleda:
Nakon to smo zavrili sa kreiranjem forme, vrijeme je da nae rijeenje poveemo sa bazompodatka. To se radi na sljedei nain. Sa glavnog menija odaberemo View-Other Windows-Data Sources.
Kada smo odabrali navedeni pogled, u donjem lijevom oku (ili negdje drugo, zavisno odpostavljenog layout-a) e nam se pojaviti odgovarajui prozor. Na njemu trebamo odabratiopciju Add New Data Source. Kada je odaberemo pojavit e nam se dijalog preko kojegkonfiguriemo i biramo bazu podataka koju elimo. Bi tno je napomenut i da WAMP servermora biti pokrenut tokom ovog procesa, inae Visual Studio nee moi prepoznati nijednu
trenutno aktivnu bazu podataka.
7/25/2019 Pristup bazama podataka
7/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Sljedei korak nam je popunjavanje podataka o samoj bazi. Inicijalno na WAMP serveru nijepostavljen nikakv user, pa su generini podaci sljedei server name: localhost, username:
root, password: [ prazno]. Kada ispravno unesemo podatke, u comboBox-u dobijemo spisaksvih dostupnih baza podataka. Odaberemo konekciiju, kliknemo Test da provjerimo, pa OK.
7/25/2019 Pristup bazama podataka
8/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
KliknemoNext, ekiramo checkBox Tablesda bi mogli koristiti tabele, te kliknemo Finishdazvrimo cijelu proceduru.
7/25/2019 Pristup bazama podataka
9/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Nakon itave procedure, vidimo da nam se u otvorenom prozoru Data Sourcespojavila emanae baze podataka. Ako smo kreirali dodatnu tabelu, kliknemo na opciju Configure DataSource With Wizardi onda nam se ova struktura osvjei.
Sada smo povezali Visual Studio sa konkretnom tabelom iz MySQL baze podataka i spremni
smo da nastavimo kreiranjem naeg rijeenja.
Rad sa bazom i DataGridViewkontrolom
Krenimo sa ubacivanjem novih redova u bazu podataka. Kreirajmo odziv na klik dugmeta za
Insert. Kd je sljedei:
privatevoidbutton1_Click(objectsender, EventArgse)
{MySqlConnectionkonekcija = newMySqlConnection("server=localhost;User
Id=root;database=mojabaza");
MySqlCommandkomanda = newMySqlCommand();komanda.CommandText = "INSERT INTO mojabaza.studenti(ime,prezime,roden,godina)
VALUES('"+ tbIME.Text + "','"+ tbPREZIME.Text + "','"+
Convert.ToString(dtpDATUM.Value.Year) + "-"+ Convert.ToString(dtpDATUM.Value.Month) +"-"+ Convert.ToString(dtpDATUM.Value.Day) + "','"+ Convert.ToString(nudGODINA.Value)
+ "');";komanda.Connection = konekcija;
konekcija.Open();
try{
intaff = komanda.ExecuteNonQuery();MessageBox.Show(aff + " rows were affected.");
}
catch(Exceptionex){
MessageBox.Show(ex.Message);
}finally{
konekcija.Close();
}}
7/25/2019 Pristup bazama podataka
10/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Krenimo redom. Prvo se kreira objekat koji predstavlja konekciju na bazu podataka.
To je klasa koja se naziva MySqlConnection koja prima kao parametar konekcioni
string. Taj string sadri podatke o naoj bazi. Sljedei korak jeste kreiranje komande koja se treba izvriti. To se radi kreiranjem
objetka tipa MySqlCommand. Ovdje nema parametara koji se prosljeuju. Pristupajui osobini CommandText klase MySqlCommandse postavlja tekst komande. Tu
emo ubaciti tekst nae INSERT komande samo to emo umjesto nekihhardkodiranih podataka ubaciti podatke sa nae forme. Treba se obratiti panja da sviatributi budu u ispravnom formatu, a pogotovo datumi koji se unose kao 'YYYY-MM-
DD' (Napomena:Ovo je generalno loe rijeenje jer na ovaj nain doputa sigurnosnipropust zvani SQL Injection(https://www.owasp.org/index.php/SQL_Injection), ali je
zapotrebe ove vjebe i zadae 4 ovaj pristup sasvim dovoljan). U sljedee dvije linije se kreiranoj komandi dodijeli konekcija i ista se otvori. Sada
smo konektovani i moemo izvravati naredbe. Poto je ovo dio u kome moe nastati izuzetak, stavljamo ga u try blok. Pozivamo
funkciju ExecuteNonQuery koja izvrava nau komandu, a kao povratni parametarvraa broj redova koji su zahvaeni promjenom.
Ako se desio neki izuzetak, prikaemo njegov tekst u catchbloku. Konano, nakon svega zatvorimo konekciju.
Odzivi za Update i Delete tj. za auriranje i brisanje unijetih slogova su dosta sliniprethodnom kodu, samo se razlikuje tekst komande.
Update:
komanda.CommandText = "UPDATE mojabaza.studenti SET ime = '"+ tbIME.Text + "',prezime
= '"+ tbPREZIME.Text + "', roden = '"+ Convert.ToString(dtpDATUM.Value.Year) + "-"+
Convert.ToString(dtpDATUM.Value.Month) + "-" + Convert.ToString(dtpDATUM.Value.Day) +
"', godina=" + Convert.ToString(nudGODINA.Value) + " WHERE id=" +
Convert.ToString(nudID.Value) + ";";
Delete:
komanda.CommandText = "DELETE FROM mojabaza.studenti WHERE id=" +
Convert.ToString(nudID.Value) + ";";
Malo drugaija situacija je sa SELECT naredbom. Tu se u trybloku nalazi sljedei dio kda:
komanda.CommandText = "SELECT * FROM mojabaza.studenti;";
...MySqlDataAdapteradp = newMySqlDataAdapter(komanda);DataSetds = newDataSet();
adp.Fill(ds);dgvPRIKAZ.DataSource = ds.Tables[0].DefaultView;
Bitno je napomenuti da ovdje nije koriten prikaz po nekom atributu, ve su pokupljeni svipdoaci iz baze. Da ostvarimo prikaz po prametrima, jednostavno kombinujemo upita sa nekim
od podataka sa forme, recimo ID.to se tie kda u trybloku, on u biti nije nita drugo nekoizvrenje komande preko objekta klase MySqlDataAdapter i oblikovanje onoga to nam ta
komanda vraa u nama pogodnu formu tj. objekat tipa DataSet. Nakon toga taj objekatpoveemo sa dataGridViewkontrolom koju se generalno koristi za prikaz podataka iz baze.
https://www.owasp.org/index.php/SQL_Injectionhttps://www.owasp.org/index.php/SQL_Injectionhttps://www.owasp.org/index.php/SQL_Injectionhttps://www.owasp.org/index.php/SQL_Injection7/25/2019 Pristup bazama podataka
11/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Zadaci za samostalan rad
ZADATAK 1.
Potrebno je nadograditi programsko rjeenje za zadatak 6 vjebe 9, tako da e se upisivati
podaci o zaposlenicima u bazu podataka. Sve operacije nad zaposlenicima (brisanjezaposlenika, dodavanje zaposlenika, izmjena postojeeg zaposlenika, pretrage zaposlenika poodreenom kriteriju) e se obavljati nad podacima u bazi podataka. Takoe je potrebnodizajnirati ERD dijagram. Iz pomonog C# konzolnog rjeenja KreiranjeTabela kreiratiodgovarajue tabele u MySQL bazi podataka.
ZADATAK 2.
Na formi sa slike 1 (forma iz vjebe 9 zadatak 6) dodati dugmad: Dodaj Zaposlenika,Pregled Zaposlenika, Brisanje Zaposlenika, Promjena Podataka Zaposlenika, Lista Svih
Zaposlenika,Pretraga Po Kriteriju.
Slika 1Forma Zaposlenik
Za dugmeDodaj Zaposlenikaprogramirati dogaaj klik koji e validirane podatkeo zaposleniku dodati u tabelu.
Za dugmePregled Zaposlenikaprogramirati dogaaj klik kojim e se prikazati svi
zaposlenici na formi ali jedan po jedan i to na istoj formi koja je koristila za unospodataka o zaposleniku. Omoguiti odgovarajuu navigaciju na sljedei i prethodnislog.
Za dugme Brisanje Zaposlenikaprogramirati dogaaj klik kojim e se prikazivatizaposlenici na isti nain kao sa dogaajem Pregled Zaposlenika. Omoguitikorisniku kada pronae slog koji eli izbrisati, da se izvri brisanje sloga izosnovne tabele za zaposlenike. Izbrisani slog je potrebno prepisati u drugu tabelu i
dodati datum i vrijeme brisanja sloga.
Za dugme Promjena Podataka Zaposlenikaprogramirati dogaaj klik kojim e seprikazivati zaposlenici na isti nain kao sa dogaajem Pregled Zaposlenika.
7/25/2019 Pristup bazama podataka
12/12
Razvoj Programskih Rjeenja
Akademska godina 2015/2016
Omoguiti korisniku kada pronae slog koji eli I promijeniti, da se izvripromjena sloga iz osnovne tabele za zaposlenike.
Za dugme Lista Svih Zaposlenikaprogramirati dogaaj klik koji e omoguitiprikaz podataka o zaposlenicima na drugoj formi u DataGridView kontroli.
Omoguiti navigaciju kroz podatke prikazane na DataGridview kontroli. Omoguitii da se preko DataGridView kontrole moe vriti promjena podataka ozaposlenicima.
Za dugmePretraga Po Kriterijuprogramirati dogaaj klik koji e omoguiti da sekorisniku prikae lista koja e sadravati kriterije izbora koji odgovaraju atributimaklase zaposlenik (odnosno kolonama u tabeli zaposlenik). Kada korisnik odabere
kriterij po kojem eli izvriti pretragu i unese odgovarajuu vrijednost izvritiodgovarajui prikaz o traenom zaposleniku ukoliko isti postoji.