Republiki seminar za nastavnike matematike i informatike Drutvo
Republički seminar za nastavnike matematike i informatike Društvo matematičara Srbije, Beograd, januar 2014. Miljan G. Jeremić
Plan rada sa bazama podataka Rezime: Od drugog polugodišta školske 2012 godine donešen je novi plan i program za 4. razred Gimnazije za računarstvo i informatiku. Kurs iz baza podataka se radi sa 14 časova teorije i 18 časova vežbi. Jedan od časova koji se obrađuje po planu je da se radi sa vizuelnim komponentama za povezivanje, prikazivanje i modifikaciju baza podataka u Windows okruženju.
Baze podataka Što se programskih jezika tiče ovde će biti predstavljeni C# i Delphi u interakciji sa bazom podataka kreiranoj ranije u Access-u. Biće predstavljeni primeri rada sa pomenutim programskim jezicima sobzirom da se Delphi uči u trećem razredu, dok je C# je jezik koji je sve popularniji kod učenika koji se po prvi put sreću sa programiranjem.
Tema Izrada desktop aplikacije korišćenjem ADO. NET-a i programskog jezika C#
• Zadatak: Korišćenjem programskog jezika C#, • ADO. NET-a i baze podataka SKOLA kreirati aplikaciju sa sledećim karakteristikama: Aplikacija Skola – 1. Aplikacija poseduje Combo. Box kontrolu combo. Box 1 koji prikazuje sve predmete iz tabele PREDMET. – 2. Aplikacija poseduje Combo. Box kontrolu combo. Box 2 koji prikazuje sve učenike iz tabele UCENIK. – 3. Dugme Prikaži ocene i izostanke u okviru List. Box kontrole prikazuje sve ocene za izabranog učenika i izabrani predmet. Istovremeno se u okviru Data. Grid. View kontrole prikazuju i izostanci odabranog učenika sa odabranog predmeta.
Izgled forme u zadatku
SQL upiti u ACCESS-u
ADO. NET Direktan pristup podacima korišdenjem ADO. NET-a • –Redosled operacija: • • Kreirati Connection, Commandi Data. Reader objekte • • Otvoriti konekciju • • Koristiti Data. Reader za čitanje podataka iz baze podataka • • Zatvoriti konekciju • –Korišdenje sloja sa raskinutom vezom • • Data. Set • • Data. Adapter
ADO. NET arhitektura 9
ADO. NET objekti Data. Set Data. Adapter Data. Table Fill Data Source Select. Command Update. Command Data. Adapter Data. Table Fill Select. Command Update. Command Connection
Šta je Data. Set? • Data. Set može da sadrži više objekata tipa Data. Table • Relacije između tabela se predstavljaju objektima tipa • • Data. Relation Primarni i spoljni ključevi su podržani Instance klasa Data. Row i Data. Column se koriste za pristup vrednostima u tabelama Data. Column Data. Row Data. Table Data. Relation
Inicijalno popunjavanje kontrola podacima • public partial class. Form 1: Form • { • private. Array. Listlista. Mbr. Ucenika; • • public. Form 1() { Initialize. Component(); } private void. Form 1_Load(objectsender, Event. Argse) { lista. Mbr. Ucenika = new. Array. List(); • • • Popuni. Predmet. Combo. Box(); Popuni. Ucenik. Combo. Box(); }. . .
Popunjavanje combo. Box-a koji prikazuje predmete • Ole. Db. Connectionconn = new. Ole. Db. Connection(); • conn. Connection. String = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data • • • • • Source=c: \SKOLA. mdb"; Stringstr. SQL = "Select * from PREDMET"; Ole. Db. Commandcomm = new. Ole. Db. Command(str. SQL, conn); Ole. Db. Data. Adapteradapter = new. Ole. Db. Data. Adapter(comm); Data. Setds = new. Data. Set(); try { conn. Open(); adapter. Fill(ds, "Predmet"); conn. Close(); combo. Box 1. Data. Source = ds. Tables["Predmet"]; combo. Box 1. Display. Member = "Naziv"; combo. Box 1. Value. Member = "Sifra"; combo. Box 1. Drop. Down. Style = Combo. Box. Style. Drop. Down. List; } catch(Exceptionexc) { //obrada izuzetka }
Popunjavanje combo. Box-a koji prikazuje učenike • • • • • • Ole. Db. Connectionconn = new. Ole. Db. Connection(); conn. Connection. String = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data Source=c: \SKOLA. mdb"; Stringstr. SQL = "Select * from UCENIK"; Ole. Db. Commandcomm = new. Ole. Db. Command(str. SQL, conn); try { conn. Open(); Ole. Db. Data. Readerreader = comm. Execute. Reader(); while(reader. Read()) { combo. Box 2. Items. Add(reader[1]. To. String() + " " + reader[3]. To. String()); lista. Mbr. Ucenika. Add(reader[0]. To. String()); } if (combo. Box 2. Items. Count > 0) { combo. Box 2. Selected. Index = 0; } conn. Close(); } catch(Exceptionexc) { //obrada izuzetka }
Dugme za prikaz ocena i izostanaka protected void prikazi. Ocene. IIzostanke_Click(object sender, Event. Args ea) • { • prikazi. Ocene(); • prikazi. Izostanke(); • }
Prikazivanje ocena –I deo • • • • • private void prikazi. Ocene() { Ole. Db. Connectionconn = new. Ole. Db. Connection(); conn. Connection. String = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data Source=c: \SKOLA. mdb"; Ole. Db. Parameterparam = new. Ole. Db. Parameter(); param. Parameter. Name = "@sifra. Predmeta"; param. Value = combo. Box 1. Selected. Value. To. String(); param. Ole. Db. Type = Ole. Db. Type. Long. Var. Char; Ole. Db. Parameterparam 2 = new. Ole. Db. Parameter(); param 2. Parameter. Name = "@mbr. Ucenika"; param 2. Value = lista. Mbr. Ucenika[combo. Box 2. Selected. Index]; param 2. Ole. Db. Type = Ole. Db. Type. Integer; Stringstr. SQL = "Select * from OCENA where Sifra=@sifra. Predmeta and Mbr=@mbr. Ucenika"; Ole. Db. Commandcomm = new. Ole. Db. Command(str. SQL, conn); comm. Parameters. Add(param 2); . . .
Prikazivanje ocena –II deo • • • • Ole. Db. Data. Adapteradapter = new. Ole. Db. Data. Adapter(comm); Data. Setds = new. Data. Set(); try { conn. Open(); adapter. Fill(ds, "Ocene"); conn. Close(); list. Box 1. Data. Source = ds. Tables["Ocene"]; list. Box 1. Display. Member = "Ocena"; list. Box 1. Value. Member = "Id"; } catch(Exceptionexc) { //obrada izuzetka }
Prikaz izostanaka –I deo • • • private voidprikazi. Izostanke() { Ole. Db. Connectionconn = new. Ole. Db. Connection(); conn. Connection. String = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data Source=c: \SKOLA. mdb"; //izostanci Ole. Db. Parameterparam = new. Ole. Db. Parameter(); param. Parameter. Name = "@mbr. Ucenika"; param. Value = lista. Mbr. Ucenika[combo. Box 2. Selected. Index]; param. Ole. Db. Type = Ole. Db. Type. Integer; Stringstr. SQL = "Select * from IZOSTANAK where Mbr=@mbr. Ucenika"; Ole. Db. Commandcomm = new. Ole. Db. Command(str. SQL, conn); • • • comm. Parameters. Add(param); . . .
Prikaz izostanaka –II deo • • • • Ole. Db. Data. Adapteradapter = new. Ole. Db. Data. Adapter(comm); Data. Setds = new. Data. Set(); try { conn. Open(); adapter. Fill(ds, "Izostanak"); conn. Close(); data. Grid. View 1. Data. Source = ds. Tables["Izostanak"]; data. Grid. View 1. Allow. User. To. Add. Rows = false; data. Grid. View 1. Allow. User. To. Delete. Rows = false; } catch(Exceptionexc) { //obrada izuzetka }
Projektni zadatak
Pitanja? ? ?
DMS 2014 Hvala na pažnji !!! Miljan G. Jeremić miljan. jeremic@gmail. com www. midusware. wordpress. com www. informatikum. mdl 2. com 065 -5 -734 -000
- Slides: 22