izveidot divas saistītas relāciju db tabulas (ar datiem). web viewrĪgas tehniskĀ universitĀte....

29
1 RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts Mācību priekšmets “Lielu datu bāzu tehnoloģija” Java tehnoloģiju izmantošana datu bāzes sistēmā Izstrādāja: Pauls Žunda 3.kurss 2013. gads

Upload: vudan

Post on 11-Mar-2018

224 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

1

RĪGAS TEHNISKĀ UNIVERSITĀTEDatorzinātnes un informācijas tehnoloģijas fakultāte

Lietišķo datorsistēmu institūts

Mācību priekšmets

“Lielu datu bāzu tehnoloģija”

Java tehnoloģiju izmantošana datu bāzes sistēmā

Izstrādāja: Pauls Žunda3.kurss

2013. gads

Page 2: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

2

Saturs1. Izveidot divas saistītas relāciju DB tabulas (ar datiem)..................................................................4

2. Java klase datubāzē bez datu apmaiņas........................................................................................5

2.1. JavaLoader izmantošana........................................................................................................5

2.2. CREATE JAVA SOURCE izmantošana......................................................................................6

3. Java klases izveide, kas veic apmaiņu ar datubāzi..........................................................................7

3.1. Klases DarbManag izveide un ielāde......................................................................................7

3.2. Procedūras FirmasInfo pievienošana un testēšana................................................................9

3.3. Procedūras PievienotDarbinieku pievienošana un testēšana..............................................10

4. Datu bāzes struktūru realizēšana ar NetBeans IDE......................................................................11

4.1. Projekta uzsākšana..............................................................................................................11

4.2. Funkciju apraksts.................................................................................................................13

4.3. Pirmkods..............................................................................................................................13

4.4. Aplikācija testēšana.............................................................................................................18

Secinājumi...........................................................................................................................................23

Page 3: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

3

1. Izveidot divas saistītas relāciju DB tabulas (ar datiem).Izveidosim 1. tabuluFIRMAS ar kolonnām ID, nosaukums, dibināšanas datumsun firmas vērtība.CREATETABLE FIRMAS(F_ID NUMBERPRIMARYKEY,F_NOS VARCHAR(20) NOTNULL,DIB_DAT DATENOTNULL,VERTIBA NUMBERNOTNULL);

Izveidosim 2. tabulu DARBINIEKI ar darbinieka ID, vārdu, uzvārdau, pakāpes numura un firmas ID.CREATETABLE DARBINIEKI(D_ID NUMBERPRIMARYKEY,VARDS VARCHAR(20) NOTNULL,UZVARDS VARCHAR(20) NOTNULL,D_PAK NUMBERDEFAULT1,ID_F NUMBER,CONSTRAINT FRGN_KEY FOREIGNKEY (ID_F) REFERENCES FIRMAS(F_ID));

Ievietosim datus tabulā FIRMAS.INSERTINTO FIRMAS VALUES(1,'AAA',TO_DATE('01/01/2013','dd/mm/yyyy'),5);INSERTINTO FIRMAS VALUES(2,'BBB',TO_DATE('01/01/2012','dd/mm/yyyy'),10);INSERTINTO FIRMAS VALUES(3,'CCC',TO_DATE('01/01/2011','dd/mm/yyyy'),1);INSERTINTO FIRMAS VALUES(4,'DDD',TO_DATE('01/01/2010','dd/mm/yyyy'),10);

Ievietosim datus tabulā DARBINIEKIINSERTINTO DARBINIEKI VALUES(1, 'Janis', 'Koks', 3, 1);INSERTINTO DARBINIEKI VALUES(2, 'Raivis', 'Lapa', 2, 1);INSERTINTO DARBINIEKI VALUES(3, 'Ivo', 'Celms', 1, 1);INSERTINTO DARBINIEKI VALUES(4, 'Igors', 'Liepins', 1, 1);INSERTINTO DARBINIEKI VALUES(5, 'Aiga', 'Ozola', 3, 2);INSERTINTO DARBINIEKI VALUES(6, 'Elina', 'Vitola', 2, 2);INSERTINTO DARBINIEKI VALUES(7, 'Andris', 'Berzins', 1, 2);INSERTINTO DARBINIEKI VALUES(8, 'Arvids', 'Apse', 3, 3);

Attēls 1. Tabula FIRMAS

Attēls 2. Tabula DARBINIEKI

Page 4: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

4

2. Java klase datubāzē bez datu apmaiņas2.1. JavaLoader izmantošana

Izveidosim jaunu Java klasi un saglabāsim to kā JavaDB.java.publicclassJavaPrint{publicstaticStringHello() {return "Šis ir Java zinojums!"; }}

Attēls 3. JavaLoader izmantošanaPārbaudīsim vai Java klase ir ielādēta.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS;

Attēls 4. Klases JavaPrint ielādes pārbaude

Redzam, ka mūsu klase JavaPrint ir ielādēta.

Tagad izveidosim PL/SQL funkciju, kura izsauks Java metodi.CREATEORREPLACEFUNCTION JAVA_PRINT RETURNVARCHAR2ASLANGUAGEJAVANAME'JavaPrint.Hello() returnjava.lang.String';

Pārbaudīsim, vai tika izveidota mūsu funkcija.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE='FUNCTION';

Attēls 5. Funkcijas JAVA_PRINT izveides pārbaude

Page 5: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

5

Tagad aktivēsim PL\SQL funkciju ar SELECT vaicājumu.SELECT JAVA_PRINT FROM DUAL;

Attēls 6. JAVA_PRINT izvade ar SELECT vaicājumu

Aktivēsim PL\SQL funkciju caur DBMS_OUTPUT.PUT_LINE()CALL DBMS_OUTPUT.PUT_LINE(JAVA_PRINT());

Attēls 7. JAVA_PRINT izvade ar DBMS_OUTPUT.PUT_LINE()

2.2. CREATE JAVA SOURCE izmantošana

Izveidosim java klasi ar CREATE JAVA SOURCE.CREATEORREPLACEANDRESOLVEJAVASOURCENAMED "JavaPrint2" ASclass JavaPrint2 {publicstaticvoidmain(String[] args) {System.out.println("Teksts:" + args[0]); }};

Pārbaudīsim vai Java klase ir ielādēta.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME='JavaPrint2';

Attēls 8. Klases JavaPrint2 izveides pārbaude

Tagad izveidosim PL\SQL procedūru JAVA_PRINT2, kura izsauks mūsu Java metodiCREATEORREPLACEPROCEDURE JAVA_PRINT2(ARGS VARCHAR2) ASLANGUAGEJAVANAME'JavaPrint2.main(java.lang.String[])';

Pārbaudīsim, vai tika izveidota mūsu procedūra.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE';

Attēls 9. Procedūras JAVA_PRINT2 izveides pārbaude

Page 6: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

6

Aktivēsim PL\SQL procedūru ar CALL izsaukumu;CALL JAVA_PRINT2('ZIŅOJUMS NO PROCEDŪRAS');

Attēls 10. Procedūras JAVA_PRINT aktivēšana ar CALL izsaukumu

3. Java klases izveide, kas veic apmaiņu ar datubāzi

3.1. Klases DarbManag izveide un ielādeIzveidosim jaunu Java klasi „DarbManag” ar divām procedūrām. Pirmā procedūra „FirmasInfo” izvadīs informāciju par firmu. Otrā procedūra „PievienotDarbinieku” pievienos firmai jaunu darbinieku.

importjava.sql.*;publicclassDarbManag{

publicstaticvoidFirmasInfo(Stringf_vards) {try{java.sql.Connectionconn = DriverManager.getConnection("jdbc:default:connection:");Statementvaicajums = conn.createStatement();ResultSetrezultats = vaicajums.executeQuery("SELECT * FROM FIRMAS WHERE F_NOS = '" + f_vards + "'");if (!rezultats.next()) {System.out.println("Kluda: Firma nepastav"); } else{String firma = rezultats.getString("F_NOS");Date datums = rezultats.getDate("DIB_DAT");Stringvertiba = rezultats.getString("VERTIBA");System.out.println("Firmas nosaukums: " + firma + "\nDibinasanas datums: " + datums.toString() + "\nFirmasvertiba: " + vertiba + " milj. $");rezultats = vaicajums.executeQuery("SELECT D.* FROM DARBINIEKI D, FIRMAS F WHERE F.F_NOS='" + f_vards + "' AND D.ID_F=F.F_ID");System.out.print("Darbinieki:");if (rezultats.next()) {String darbinieki = rezultats.getString("VARDS") + " " + rezultats.getString("UZVARDS");while (rezultats.next()) { darbinieki = darbinieki + ", " + rezultats.getString("VARDS") + " " + rezultats.getString("UZVARDS"); }System.out.println(" " + darbinieki); } else{System.out.println(" nav"); } }vaicajums.close();conn.close(); } catch(SQLException e) {System.out.println(e.getMessage()); } }

Page 7: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

7

publicstaticvoidPievienotDarbinieku(Stringf_nos, Stringvards, Stringuzvards, Integerpakape) {try{java.sql.Connectionconn = DriverManager.getConnection("jdbc:default:connection:");Statementvaicajums = conn.createStatement();ResultSetrezultats = vaicajums.executeQuery("SELECT * FROM FIRMAS WHERE F_NOS = '" + f_nos + "'");if (!rezultats.next()) {System.out.println("Kluda: Firma nepastav"); } else{String F_ID = rezultats.getString("F_ID");rezultats = vaicajums.executeQuery("SELECT D_ID FROM DARBINIEKI ORDER BY D_ID DESC");int ID = 1;if (rezultats.next()) { ID = rezultats.getInt("D_ID") + 1; }vaicajums.executeQuery("INSERT INTO DARBINIEKI VALUES(" + ID + ", '" + vards + "', '" + uzvards + "', " + pakape.toString() + ", " + F_ID + ")");System.out.println("Darbinieks pievienots!"); }vaicajums.close();conn.close(); } catch(SQLException e) {System.out.println(e.getMessage()); } }}

Tagad ielādēsim mūsu izveidoto klasi ar DBMS_JAVA.loadjavaCALLDBMS_JAVA.loadjava('C:\JavaDB\DarbManag.java');ALTERJAVACLASS "DarbManag" COMPILE;

Pārbaudīsim vai Java klase ir ielādēta.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHEREOBJECT_NAME='DarbManag';

Attēls 11. Klases DarbManag ielādes pārbaude

Page 8: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

8

3.2. Procedūras FirmasInfo pievienošana un testēšana

Izveidosim jaunu procedūru FIRMAS_INFO no Java procedūras FirmasInfo.CREATEORREPLACEPROCEDURE FIRMAS_INFO(F_NOS VARCHAR2) ASLANGUAGEJAVANAME'DarbManag.FirmasInfo(java.lang.String)';

Pārbaudīsim, vai tika izveidota mūsu procedūra.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE';

Attēls 12. Procedūras FIRMAS_INFO izveides pārbaude

Tagad pārbaudīsim, vai izvadīs firmas informāciju, ievadot pareizu firmas nosaukumu.CALL FIRMAS_INFO('AAA');

Attēls 13. FIRMAS_INFO ar pareizu firmas nosaukumu

Tagad pārbaudīsim, ko izvadīs, ja pārbaudīs firmu bez darbiniekiem.CALL FIRMAS_INFO('DDD');

Attēls 14. FIRMAS_INFO firmai bez darbiniekiem

Tagad pārbaudīsim, ko izvadīs, ja ievadīs neesošu firmas nosaukumu.CALL FIRMAS_INFO('XXX');

Attēls 15. FIRMAS_INFO firmai, kura nepastāv

Page 9: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

9

3.3. Procedūras PievienotDarbinieku pievienošana un testēšana

Izveidosim jaunu procedūru PIEVIENOT_DARBINIEKU no Java procedūras PievienotDarbiniekuCREATEORREPLACEPROCEDURE PIEVIENOT_DARBINIEKU(F_NOS VARCHAR2, VARDS VARCHAR2, UZVARDS VARCHAR2, PAKAPE NUMBER) ASLANGUAGEJAVANAME'DarbManag.PievienotDarbinieku(java.lang.String, java.lang.String, java.lang.String, java.lang.Integer)';

Pārbaudīsim, vai tika izveidota mūsu procedūra.SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE';

Attēls 16. Procedūras PIEVIENOT_DARBINIEKU izveides pārbaude

Tagad pamēģināsim pievienot darbinieku firmai, kura nepastāv.CALL PIEVIENOT_DARBINIEKU('XXX','Liga','Kocina',3)

Attēls 17. PIEVIENOT_DARBINIEKU firmai, kura nepastāv

Tagad pievienosim darbinieku firmai, kura pastāv.CALL PIEVIENOT_DARBINIEKU('DDD','Liga','Kocina',3)

Attēls 18. PIEVIENOT_DARBINIEKU firmai, kura pastāv

Pārbaudīsim, vai darbinieks ir pievienots ar FIRMAS_INFO procedūru.CALL FIRMAS_INFO('DDD');

Attēls 19. Pievienotā darbinieka pārbaude ar FIRMAS_INFO

Page 10: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

10

4. Datu bāzes struktūru realizēšana ar NetBeans IDE4.1. Projekta uzsākšana

Lai vispār sāktu darbu, vispirms ir jālejupielādē NetBeans IDE. Es izmantoju NetBeans IDE 7.4.Lai uzsāktu projektu spiež File/NewProject...

Attēls 20. Projekta uzsākšana

Kad projekts ir izveidots, vajag projektam vajadzīgos draiverus, lai varētu izveidot OJDBC savienojumu ar mūsu Oracle datubāzi.

Projects logā ar labo taustiņu spiežam uz Library un izvēlamies Add JAR/Folder...

Attēls 21. Draiveru pievienošana

Page 11: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

11

Pēc tam izvēlamies mūsu vajadzīgo draiveri. Manā gadījumā tas ir ojdbc7.jar, kurš atrodas C:\app\Oracle\product\12.1.0\dbhome_1\jdbc\lib\ojdbc7.jar

Attēls 22. Draiveru pievienošana

Attēls 23. NetBeans IDE

Page 12: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

12

4.2. Funkciju aprakstsManis izveidotajam projektam ir 5 galvenās funkcijas, lai nodemonstrētu, ka ir iespējams veikt

darbu ar datubāzi, neielādējot Java klasi datubāzē. Manai java aplikācijai ir vajadzīga lietotāja saskarsme, kur lietotājs izvēlas vajadzīgās darbības. Lietotājam ir 5 izvēles.

1. Izveidot tabulu „PIRKUMI” - (metode CreatePirkumi). Šī metode izveido tabulu PIRKUMI ar parametriem pirkuma ID, summa un pārdevēja ID. Pārdevējs ir cilvēks no tabulas DARBINIEKI.

2. Dzēst tabulu „PIRKUMI” – (metode DropPirkumi). Šī metode dzēš tabulu PIRKUMI.3. Pievienot jaunu pirkumu – (metode InsertPirkumi). Šī metode pievieno jaunu pirkumu

tabulai PIRKUMI. Pirms veic šīs metodes izsaukšanu, vēlams uzzināt atbilstošā pārdevēja ID.4. Izvaditinfo par pirkumiem – (metode PrintPirkumi). Šī metode izvada informāciju par

esošajiem pirkumiem.5. Izvaditinfo par firmam – (metode PrintFirmas). Šī metode izvada informāciju par firmām un

visiem tās darbiniekiem.

Izveidoju arī klasi DataBase, kura glabās Connection, Statement un ResultSet, lai varētu šo informāciju nodot visām metodem vienkārši padodot objekta referenci.

4.3. Pirmkodspackagejava_db;

/** * * @author Pauls */importjava.sql.*;importjava.util.Scanner;importjava.io.*;

publicclassJava_DB{

privatestaticclassDataBase{

Connectionsavienojums = null;Statementvaicajums;ResultSetrezultats; }

publicstaticvoidmain(String[] args) {try{DataBase DB = newDataBase();if (RegisterDriver() &&CreateConnection(DB)) {DB.vaicajums = DB.savienojums.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);Scanner ievade = newScanner(newInputStreamReader(System.in));Stringtext = "";while (!text.equals("0")) {System.out.println("Datubazesparvaldnieks!"); System.out.println("1) Taisit tabulu \"PIRKUMI\""); System.out.println("2) Dzest tabulu \"PIRKUMI\""); System.out.println("3) Pievienot jaunu pirkumu"); System.out.println("4) Izvaditinfo par pirkumiem"); System.out.println("5) Izvaditinfo par firmam"); System.out.println("0) Iziet");

Page 13: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

13

System.out.print("Izvele: ");text = ievade.next();switch (text) {case "0":

DB.vaicajums.close();DB.savienojums.close();break;case "1":CreatePirkumi(DB);break;case "2":DropPirkumi(DB);break;case "3":InsertPirkumi(DB, ievade);break;case "4":PrintPirkumi(DB);break;case "5":PrintFirmas(DB);break;default:System.out.println("Nepareizaizvele!\n"); } }

} } catch(SQLException e) {System.out.println(e); } }

privatestaticvoidPrintFirmas(DataBase DB) {try{DB.rezultats = DB.vaicajums.executeQuery("SELECT * FROM FIRMAS ORDER BY F_ID ASC");if (!DB.rezultats.next()) {System.out.println("Nav ierakstu"); } else{ResultSettempRS;StatementtempST = DB.savienojums.createStatement();;DB.rezultats.previous();while (DB.rezultats.next()) {System.out.println("Firmas nosaukums: " + DB.rezultats.getString("F_NOS") + "\nDibinasanas datums: " + DB.rezultats.getDate("DIB_DAT").toString() + "\nFirmasvertiba: " + DB.rezultats.getString("VERTIBA") + " milj. $");tempRS = tempST.executeQuery("SELECT DISTINCT D.D_ID, D.VARDS, D.UZVARDS FROM DARBINIEKI D, FIRMAS F WHERE D.ID_F=" + DB.rezultats.getString("F_ID"));System.out.print("Darbinieki:");if (tempRS.next()) {String darbinieki = tempRS.getString("VARDS") + " " + tempRS.getString("UZVARDS") + "(ID " + tempRS.getString("D_ID") + ")";while (tempRS.next()) { darbinieki = darbinieki + ", " + tempRS.getString("VARDS") + " " + tempRS.getString("UZVARDS") + "(ID " + tempRS.getString("D_ID") + ")"; }System.out.println(" " + darbinieki); } else{

Page 14: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

14

System.out.println(" nav"); }System.out.println(); }tempST.close(); } } catch(SQLException e) {System.out.println(e); }System.out.println(); }

privatestaticvoidPrintPirkumi(DataBase DB) {try{DB.rezultats = DB.vaicajums.executeQuery("SELECT P.P_ID, P.SUMMA, D.VARDS, D.UZVARDS FROM PIRKUMI P, DARBINIEKI D WHERE P.ID_D = D.D_ID");if (!DB.rezultats.next()) {System.out.println("Nav ierakstu"); } else{DB.rezultats.previous();System.out.println("Pirkumi: ");while (DB.rezultats.next()) {System.out.println("Pirkums ID " + DB.rezultats.getString(1) + ": " + DB.rezultats.getString(2) + " $ (" + DB.rezultats.getString(3) + " " + DB.rezultats.getString(4) + ")"); } } } catch(SQLException e) {if (e.getErrorCode() == 942) {System.out.println("Kluda: Tabula nepastav, nevar izvadit pirkumus!"); } else{System.out.println(e); } }System.out.println(); }

privatestaticvoidCreatePirkumi(DataBase DB) {try{DB.vaicajums.executeQuery("CREATE TABLE PIRKUMI " + "(P_ID NUMBER PRIMARY KEY," + "SUMMA NUMBER NOT NULL," + "ID_D NUMBER," + "CONSTRAINT F_KEY_ID_D FOREIGN KEY(ID_D) REFERENCES DARBINIEKI (D_ID))");System.out.println("Tabula\"PIRKUMI\" izveidota"); } catch(SQLException e) {if (e.getErrorCode() == 955) {System.out.println("Kluda: Tabula jau pastav!"); } else{System.out.println(e); } }System.out.println(); }

privatestaticvoidDropPirkumi(DataBase DB) {try{DB.vaicajums.executeQuery("DROP TABLE PIRKUMI");System.out.println("Tabula\"PIRKUMI\"izdzesta"); } catch(SQLException e) {

Page 15: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

15

if (e.getErrorCode() == 942) {System.out.println("Kluda: Tabula nepastav, nevar izdzest!"); } else{System.out.println(e); } }System.out.println(); }

privatestaticvoidInsertPirkumi(DataBase DB, Scanner ievade) {try{DB.rezultats = DB.vaicajums.executeQuery("SELECT * FROM PIRKUMI"); } catch(SQLException e) {if (e.getErrorCode() == 942) {System.out.println("Kluda: Tabula nepastav, nevar pievienot pirkumu!"); } else{System.out.println(e); }System.out.println();return; }

String summa = null;String ID = null;boolean b = false;while (b == false) {try{System.out.print("Ievadi pirkuma summu: "); summa = ievade.next();Float.parseFloat(summa); b = true; } catch(NumberFormatException e) {System.out.println("Nepareizs summas formats!"); b = false; } }

b = false;while (b == false) {try{System.out.print("Ievadi darbinieka ID: "); ID = ievade.next();Integer.parseInt(ID);DB.rezultats = DB.vaicajums.executeQuery("SELECT * FROM DARBINIEKI WHERE D_ID=" + ID);if (!DB.rezultats.next()) {System.out.println("Nepareizs darbinieka ID"); b = false; } else{DB.rezultats = DB.vaicajums.executeQuery("SELECT P_ID FROM PIRKUMI ORDER BY P_ID DESC");int P_ID = 1;if (DB.rezultats.next()) { P_ID = DB.rezultats.getInt("P_ID") + 1; }DB.vaicajums.executeQuery("INSERT INTO PIRKUMI VALUES(" + P_ID + ", " + summa + ", " + ID + ")");System.out.println("Pirkums pievienots"); b = true; } } catch(NumberFormatException e) {

Page 16: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

16

System.out.println("Nepareizs darbinieka ID"); b = false; } catch(SQLException e) {System.out.println("Kluda: " + e); System.exit(0); } }

System.out.println(); }

privatestaticbooleanRegisterDriver() {try{DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());System.out.println("Draiverisregistrets");returntrue; } catch(SQLException e) {System.out.println(e);returnfalse; } }

privatestaticbooleanCreateConnection(DataBase DB) {try{String serveris = "localhost";String ports = "1521";Stringsid = "ORCL";Stringurl = "jdbc:oracle:thin:@" + serveris + ":" + ports + ":" + sid;Stringlietotajs = "Pauls4";String parole = "*******";DB.savienojums = DriverManager.getConnection(url, lietotajs, parole);System.out.println("Savienojums ar DB izveidots");returntrue; } catch(SQLException e) {System.out.println(e);returnfalse;

} }

}

Page 17: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

17

4.4. Aplikācija testēšanaSākumā uzbūvēsim mūsu vajadzīgo .jar failu un veiksim aplikācijas testēšanu caur CommandPrompt.Uzbūvēsim mūsu projektu ar Run/CleanandBuildProject. Lai palaistu mūsu izveidoto .jar caur CommandPrompt izmantosim komadu: java -jar "C:\Users\Pauls\Documents\NetBeansProjects\Java_DB\dist\Java_DB.jar"

Palaižot mūsu aplikāciju, redzam ziņojumu, ka draiveris ir reģistrēts un savienojums ar datubāzi izveidots. Kā arī parādās darbību izvēle.

Attēls 24. Aplikācijas palaišana

Tagad izvēlēsimies darbību, kura nav sarakstā.

Attēls 25. Neesošas darbības izvēle

Redzam, ka izvada informāciju „Nepareiza izvele!” un prasa mums izvēlēties darbību atkal.

Page 18: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

18

Tagad izvēlēsimies darbību Dzest tabulu „PIRKUMI”, lai redzētu, kā aplikācija reaģēs, kad prasīsim dzēst tabulu, kura vēl nav izveidota.

Attēls 26. Neesošas tabulas dzēšanaRedzam, ka aplikācija izvada ziņojumu par to, ka tabula nepastāv un nevar izdzēst.

Tagad izvēlēsimies darbību Pievienot jaunu pirkumu, lai redzētu, kā aplikācija reaģēs, kad mēģināsim pievienot pirkumu tabulai, kura nepastāv.

Attēls 27. Pirkumu pievienošana neesošai tabulaiRedzam, ka aplikācija izvada ziņojumu par to, ka pirkumu pievienot nevar, jo tabula nepastāv.

Page 19: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

19

Tagad izvēlēsimies darbību Izvaditinfo par pirkumiem, lai redzētu, kā aplikācija reaģēs, kad vēlēsimies, izvadīt info par pirkumiem, kad tabula PIRKUMI nav izveidota.

Attēls 28. Pirkumu izvade, kad nav izveidota tabula PIRKUMI

Redzam, ka aplikācija izvada ziņojumu par to, nevar izvadīt pirkumus, jo nepastāv tabula.

Tagad izvēlēsimies darbību Izvaditinfo par firmam, lai redzētu visas firmas un tās dariniekus.

Attēls 29. Info par firmamRedzam, ka tika izvadīta informācija par firmām un tās darbiniekiem.

Page 20: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

20

Tagad izvēlēsimies darbību Izveidot tabulu „PIRKUMI”

Attēls 30. Tabulas pirkumi izveideRedzam, ka parādās ziņojums, ka tabula „PIRKUMI” ir izveido. Lai tiešām pārbaudītu, ka tā ir, pārbaudīsim esošās tabulas caur SQL Developer.SELECT TABLE_NAME, NUM_ROWS FROM USER_TABLES;

Attēls 31. Tabulas PIRKUMU izveides pārbaudeRedzam, ka tabula ir izveidota.

Tagad pamēģināsim šo tabulu dzēst ar darbibuDzest tabulu „PIRKUMI”.

Attēls 32. Tabulas pirkumi dzēšanaRedzam, ka parādās ziņojums, ka tabula „PIRKUMI” ir izdzēsta. Lai tiešām pārbaudītu, ka tā ir, pārbaudīsim esošās tabulas caur SQL Developer.SELECT TABLE_NAME, NUM_ROWS FROM USER_TABLES;

Attēls 33. Tabulas PIRKUMI izdzēšanas pārbaude

Page 21: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

21

Tagad izveidosim tabulu PIRKUMI no jauna un pievienosim dažus pirkumus.

Attēls 34. Pirkuma pievienošanaRedzam, ka gadījumā, kad ir nepareizs summas formāts, tiek izvadīts kļūdas ziņojums. Un gadījumā, kad ir nepareizs darbinieka ID, arī tiek izvadīts kļūdas ziņojums. Kad viss ir veiksmīgi izdarīts parādās ziņojums „Pirkums pievienots”.

Tagad pievienosim vēl divus pirkumus un izvēlēsimies darbību Izvaditinfo par pirkumiem.

Attēls 35. Pirkumu izvadeRedzam, ka tiek izvadīts katra pirkuma ID: summa (pārdevējs).

Pārbaudīsim šīs tabulas ierakstus arī caur SQL Developer.SELECT * FROM PIRKUMI;

Attēls 35. Tabula PIRKUMIRedzam, ka aplikācijas izvadītais teksts atbilst tabulai.

Pēc tam nospiežam „0” un izejam no aplikācijas.

Page 22: Izveidot divas saistītas relāciju DB tabulas (ar datiem). Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Lietišķo datorsistēmu

22

SecinājumiŠis darbs arī prasīja diezgan daudz laika, taču bija visinteresantākais no visiem. Es

personīgi vēlējos vairāk iemācīties valodu Java, un šis darbs ļāva man to arī izdarīt. Ieguvu informāciju, kā izmantot Java, lai manipulētu ar datubāzēm, gan ielādējot Java klasi datubāzē, gan ar Java aplikāciju. Īpašas problēmas nebija. Vienīgi beigās kādu laiku nevarēju izdomāt kā lai metode izmaina savu parametru (piemēram Connection), jo Java valodā visi parametri ir „pass-by-value” tipa nevis „pass-by-reference”. Līdz ar to, kad tika izveidots savienojums ar metodi CreateConnection, darbu turpināt metodē main nevarēja. Tad izdomāju izveidot klasi DataBase, kura glabās sevī vajadzīgo informāciju un kuru nodot metodēm, jo Objekta vērtība ir tas pats, kas objekta reference. Tāpēc izmainot objekta parametrus kādā apakšmetodē, izmainās oriģinālais objekts.