ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ



Σχετικά έγγραφα
ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΔΙΑΔΙΚΑΣΙΕΣ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Κεφάλαιο 14 Διασύνδεση με Εφαρμογές JAVA

ιαδικτυακές Εφαρµογές

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

7. Ανάπτυξη Εφαρµογών Βάσεων Δεδοµένων

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Query-by-Example (QBE)

, Evaluation of a library against injection attacks

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

SQL: Αιτήματα. ( Συνέχεια...) Κεφάλαιο 5. Ενηµέρωση: 23/12/2008. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Περιγραφή της εργασίας

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Lecture 3: Introduction III

Generics και ArrayLists

ΠΡΟΓΡΑΜΜΑ ΑΠΕΙΚΟΝΙΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΔΕΔΟΜΕΝΩΝ ΧΡΗΜΑΤΙΣΤΗΡΙΟΥ ΑΞΙΩΝ ΑΘΗΝΩΝ

Σχεσιακή Άλγεβρα. Κεφάλαιο 4. Database Management Systems, R. Ramakrishnan and J. Gehrke

Η Γλώσσα SQL. Μέρος α. Η Γλώσσα SQL Σελίδα 1

Αντικειµενοστρεφής Προγραµµατισµός

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Οντοκεντρικός Προγραμματισμός

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Αντικειμενοστρεφής Προγραμματισμός

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΚΛΑΣΕΙΣ ΜΕΘΟΔΟΙ - ΑΝΤΙΚΕΙΜΕΝΑ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Μάθημα 2 [10/11/2015]

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

6. Εξαιρέσεις στη γλώσσα Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Το σχεσιακό μοντέλο βάσεων δεδομένων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστρεφής Προγραμματισμός

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 4ο Μάθημα: SQL - Παράδειγμα. Δρ. Κωνσταντίνος Χ.

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

String SQL Injection Σε πρώτη φάση θα προσπαθήσουμε να παραβιάσουμε ως απλοί επισκέπτες το σύστημα, εισχωρώντας στο σύστημα ως διαχειριστές, παραβιάζο

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Εργαστήριο Βάσεων Δεδομένων. Triggers

PL/SQL. Κώστας Στεφανίδης

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Βασικά της γλώσσας JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Εαρινό Εξάμηνο

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Βάσεις Περιβαλλοντικών Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

Transcript:

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Σε ένα πρόγραμμα κατά την εκτέλεση του ένα ερώτημα SQL μπορεί δυναμικά να παίρνει διαφορετικές παραμέτρους μπορεί να πάρει πολλές παραμέτρους oι παράμετροι δηλώνονται με? Στις παραμέτρους περνάμε τιμές με τις μεθόδους set Επειδή ένα PreparedStatement είναι προμεταγλωτισμένο είναι γρηγορότερο. Η PreparedStatement είναι υποκλάση της Statement και γι αυτό κληρονομεί όλη τη λειτουργικότητα της. Οι δύο μέθοδοι που μελετήσαμε στην Statement υπερφορτώνονται στην PreparedStatement και χρησιμοποιούνται αποκλειστικά χωρίς παραμέτρους executequery executeupdate Δρ. Κεραμόπουλος Ευκλείδης 2

PreparedStatement pstmt = con.preparestatement( "UPDATE table4 SET m =? WHERE x =?"); όπου m και l δύο long μεταβλητές. pstmt.setlong(1, 123456789); pstmt.setlong(2, 100000000); int rowcount = 0 pstmt.setstring(1, "Hi"); for (int i = 0; i < 10; i++) { pstmt.setint(2, i); rowcount = pstmt.executeupdate(); } Δρ. Κεραμόπουλος Ευκλείδης 3

1. import java.sql.*; 2. class Jdbc_mini_update2_db2 3. { 4. static String driverclassname = " org.postgresql.driver " ; 5. static String url = "jdbc:postgresql://aetos.it.teithe.gr:5432/dblab6" ; 6. static Connection dbconnection = null; 7. static PreparedStatement prestatement = null; 8. public static void main (String[] argv) throws Exception 9. { 10. Class.forName (driverclassname); 11. dbconnection = DriverManager.getConnection (url, "db399", "07O17"); 12. 13. String updatestring = "UPDATE Sailors " + 14. "SET rating =? " + 15. "WHERE age >?"; 16. prestatement = dbconnection.preparestatement(updatestring); 17. prestatement.setint(1,20); 18. prestatement.setint(2,35); 19. int n = prestatement.executeupdate(); 20. System.out.println(n + " records updated"); 21. prestatement.close(); 22. dbconnection.close(); 23. } 24. } Δρ. Κεραμόπουλος Ευκλείδης 4

1. import java.sql.*; 2. import java.io.*; 3. class Jdbc_mini_insert2_db2 4. { 5. static String driverclassname = " org.postgresql.driver " ; 6. static String url = "jdbc:postgresql://aetos.it.teithe.gr:5432/dblab6" ; 7. static Connection dbconnection = null; 8. public static void main (String[] argv) throws Exception 9. { 10. Class.forName (driverclassname); 11. dbconnection = DriverManager.getConnection (url, "db399", "07O17"); 12. PreparedStatement insertboats; 13. String insertstring = "insert into Boats (bid, bname, color) values (?,?,?)"; 14. insertboats = dbconnection.preparestatement(insertstring); 15. int[] BoatBid = {105, 106, 107}; 16. String[] BoatBname = {"Maria", "Sofia", "George }; 17. String[] BoatColor = {"red", "green", "blue"}; 18. for(int i=0; i < 3; i++){ 19. insertboats.setint(1, BoatBid[i]); 20. insertboats.setstring(2, BoatBname[i]); 21. insertboats.setstring(3, BoatColor[i]); 22. insertboats.executeupdate(); 23. } 24. BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); Δρ. Κεραμόπουλος Ευκλείδης 5

25. int boatbid2 = 0; 26. String temp2 = ""; 27. String boatbname2 = ""; 28. String boatcolor2 = ""; 29. while(boatbid2!= 999) { 30. System.out.print("Enter boad code : "); 31. temp2 = keyboard.readline(); 32. boatbid2 = Integer.parseInt(temp2); 33. if (boatbid2!= 999) { 34. System.out.print("Enter boad name : "); 35. boatbname2 = keyboard.readline(); 36. System.out.print("Enter boad color: "); 37. boatcolor2 = keyboard.readline(); 38. insertboats.setint(1, boatbid2); 39. insertboats.setstring(2, boatbname2); 40. insertboats.setstring(3, boatcolor2); 41. insertboats.executeupdate(); 42. } 43. } 44. insertboats.close(); 45. dbconnection.close(); 46. } 47. } Δρ. Κεραμόπουλος Ευκλείδης 6

Μπορούμε να έχουμε πρόσβαση ταυτόχρονα σε όσες πηγές δεδομένων χρειαζόμαστε. Χρειαζόμαστε ένα driver ανά DBMS και ένα url ανά πηγή. Δρ. Κεραμόπουλος Ευκλείδης 7

1. import java.sql.*; 2. class Jdbc_two_drivers { 3. static String driverclassname1 = " org.postgresql.driver" ; 4. static String driverclassname2 = "com.ibm.db2.jcc.db2driver" ; 5. static String url1 = " jdbc:postgresql://aetos.it.teithe.gr:5432/dblab6"; 6. static String url2 = " jdbc:db2://192.168.16.99:50000/db2lab" ; 7. static Connection dbconnection1 = null; 8. static Connection dbconnection2 = null; 9. static Statement statement1 = null; 10. static Statement statement2 = null; 11. static ResultSet rs1 = null; 12. static ResultSet rs2 = null; 13. public static void main (String[] argv) throws Exception { 14. Class.forName (driverclassname1); 15. dbconnection1 = DriverManager.getConnection (url1, "db399", "07Ο17"); 16. statement1 = dbconnection1.createstatement(); 17. Class.forName (driverclassname2); 18. dbconnection2 = DriverManager.getConnection (url2, db399", "07Ο17"); 19. statement2 = dbconnection2.createstatement(); Δρ. Κεραμόπουλος Ευκλείδης 8

20. statement1.executeupdate("insert into Sailors (sid, sname, rating, age) values (22, 'Dustin', 7, 45.0)"); 21. statement1.executeupdate("insert into Boats(bid, bname, color) values (101, 'Interlake', 'blue')"); 22. statement1.executeupdate("insert into Reserves(sid, bid, day1) values (22, 101, '10/10/1998')"); 23. statement2.executeupdate("insert into Sailors (sid, sname, rating, age) values (22, 'Dustin', 7, 45.0)"); 24. statement2.executeupdate("insert into Boats(bid, bname, color) values (101, 'Interlake', 'blue')"); 25. statement2.executeupdate("insert into Reserves(sid, bid, day1) values (22, 101, '10/10/1998')"); 26. statement1.close(); 27. dbconnection1.close(); 28. statement2.close(); 29. dbconnection2.close(); 30. } 31. } Δρ. Κεραμόπουλος Ευκλείδης 9

2o παράδειγμα Δρ. Κεραμόπουλος Ευκλείδης 10

1. import java.sql.*; 2. class Jdbc_two_drivers 3. { 4. static String driverclassname1 = " org.postgresql.driver" ; 5. static String driverclassname2 = "com.ibm.db2.jcc.db2driver" ; 6. static String url1 = " jdbc:postgresql://aetos.it.teithe.gr:5432/dblab4"; 7. static String url2 = " jdbc:db2://192.168.16.99:50000/db2lab1" ; 8. static Connection dbconnection1 = null; 9. static Connection dbconnection2 = null; 10. static Statement statement1 = null; 11. static Statement statement2 = null; 12. static ResultSet rs1 = null; 13. static ResultSet rs2 = null; 14. public static void main (String[] argv) throws Exception 15. { 16. Class.forName (driverclassname1); 17. dbconnection1 = DriverManager.getConnection (url1, db320", 66Y91"); 18. statement1 = dbconnection1.createstatement(); 19. Class.forName (driverclassname2); 20. dbconnection2 = DriverManager.getConnection (url2, db320", 66Y91"); 21. statement2 = dbconnection2.createstatement(); 22. String selectstring1 = "SELECT sid, sname " + 23. "From Sailors"; 24. String selectstring2 = "SELECT sid" + 25. "From Reserves R, Boats B" + 26. "Where R.bid = B.Bid and B.color = red "; Έστω ο πίνακας Sailor βρίσκεται στο url1 και οι πίνακες reserves και boats βρίσκονται στο url2. Δρ. Κεραμόπουλος Ευκλείδης 11

27. rs2 = statement2.executequery(selectstring2); 28. while(rs2.next()) { 29. int reserves_sid = rs2.getint( sid"); 30. rs1 = statement1.executequery(selectstring1); 31. while(rs1.next()) { 32. int sailors_sid = rs1.getint( sid"); 33. if (sailors_sid == reserves_sid) { 34. String sailors_sname = rs1.getstring( sname"); 35. System.out.println("sailors name: " + sailors_sname); 36. } 37. } 38. } 39. statement1.close(); 40. dbconnection1.close(); 41. statement2.close(); 42. dbconnection2.close(); 43. } 44. } Δρ. Κεραμόπουλος Ευκλείδης 12

Κάθε αντικείμενο SQLException περιέχει τα παρακάτω είδη πληροφορίας: Μία περιγραφή του σφάλματος. Eνα αντικείμενο String και χρησιμοποιείται ως Java Exception message. Mε τη μέθοδο getmessage μπορούμε να το διαβάσουμε SQLState SQLException.getSQLState SQLError geterrorcode getnextexception Δρ. Κεραμόπουλος Ευκλείδης 13

try { } catch(sqlexception ex) { ex.getmessage ex.getsqlstate ex.geterrorcode ()); ex = ex.getnextexception(); Δρ. Κεραμόπουλος Ευκλείδης 14

1. import java.sql.*; 2. public class Jdbc_dblab2_create { 3. static String driverclassname = "com.ibm.db2.jcc.db2driver" ; 4. static String url = "jdbc:db2://192.168.16.99:50000/db2lab" ; 5. static String username = "db397"; 6. static String passwd = "85J93"; 7. static Connection dbconnection = null; 8. static Statement statement = null; 9. 10. public static void main (String[] argv) throws Exception { 11. Class.forName (driverclassname); 12. dbconnection = DriverManager.getConnection (url, username, passwd); 13. statement = dbconnection.createstatement(); 14. try { 15. statement.executeupdate("drop TABLE PARTICIPATES"); 16. statement.executeupdate("drop TABLE HELPS"); 17. statement.executeupdate("drop TABLE GAMES"); 18. statement.executeupdate("drop TABLE ATHLETE"); 19. statement.executeupdate("drop TABLE SPORT"); 20. statement.executeupdate("drop TABLE TRAINER"); 21. statement.executeupdate("drop TABLE JUDGE"); 22. statement.executeupdate("drop TABLE STADIUM"); 23. statement.executeupdate("drop TABLE VOLUNTEER"); Δρ. Κεραμόπουλος Ευκλείδης 15

24. } catch(sqlexception ex) { 25. System.out.println("\n -- SQL Exception --- \n"); 26. while(ex!= null) { 27. System.out.println("Message: " + ex.getmessage()); 28. System.out.println("SQLState: " + ex.getsqlstate()); 29. System.out.println("ErrorCode: " + ex.geterrorcode()); 30. ex = ex.getnextexception(); 31. System.out.println(""); 32. } } 33. statement.close(); dbconnection.close(); 34. } } run: -- SQL Exception --- Message: DB2 SQL error: SQLCODE: -204, SQLSTATE: 42704, SQLERRMC: DB397.PARTICIPATES SQLState: 42704 ErrorCode: -204 BUILD SUCCESSFUL (total time: 4 seconds) Δρ. Κεραμόπουλος Ευκλείδης 16

2o παράδειγμα Δρ. Κεραμόπουλος Ευκλείδης 17

1. import java.sql.*; 2. public class CreateCoffees { 3. static String driverclassname = "com.ibm.db2.jcc.db2driver" ; 4. static String url = "jdbc:db2://192.168.16.99:50000/db2lab"; 5. static Connection con; 6. static String createstring; 7. static Statement stmt; 8. public static void main (String[] argv) throws Exception { 9. try { 10. Class.forName(driverClassName); 11. con = DriverManager.getConnection(url, "mylogin", "mypassword"); 12. stmt = con.createstatement(); 13. createstring = "create table COFFEES (COF_NAME VARCHAR(32), SUP_ID INTEGER, " + 14. "PRICE FLOAT, SALES INTEGER, TOTAL INTEGER)"; 15. stmt.executeupdate(createstring); stmt.close(); con.close(); 16. } catch(sqlexception ex) { 17. System.err.print("ClassNotFoundException: "); 18. System.err.println(ex.getMessage()); 19. System.out.println("Message: " + ex.getmessage()); 20. System.out.println("SQLState: " + ex.getsqlstate()); 21. System.out.println("ErrorCode: " + ex.geterrorcode()); 22. } 23. } 24. } run: ClassNotFoundException: Connection authorization failure occurred. Reason: User ID or password invalid. Message: Connection authorization failure occurred. Reason: User ID or password invalid. SQLState: null ErrorCode: -99999 BUILD SUCCESSFUL (total time: 2 seconds) Δρ. Κεραμόπουλος Ευκλείδης 18

SQLWarning δίνει πληροφορίες σχετικά με προειδοποιήσεις της βάσης. Κάθε SQLWarning αντικείμενο περιέχει τα παρακάτω: Μία περιγραφή SQLState SQLerror next SQLWarning Δρ. Κεραμόπουλος Ευκλείδης 19

1. Statement stmt = con.createstatement(); 2. ResultSet rs = stmt.executequery("select COF_NAME from COFFEES"); 3. SQLWarning warning = stmt.getwarnings(); 4. if (warning!= null) { 5. System.out.println("\n---Warning---\n"); 6. while (warning!= null) { 7. System.out.println("Message: " + warning.getmessage()); 8. System.out.println("SQLState: " + warning.getsqlstate()); 9. System.out.print("Vendor error code: "); 10. System.out.println(warning.getErrorCode()); 11. System.out.println(""); 12. warning = warning.getnextwarning(); 13. } 14. } 15. while (rs.next()) { 16. String coffeename = rs.getstring("cof_name"); 17. System.out.println("Coffees available at the Coffee Break: "); 18. System.out.println(" " + coffeename); 19. SQLWarning warn = rs.getwarnings(); 20. if (warn!= null) { 21. System.out.println("\n---Warning---\n"); 22. while (warn!= null) { 23. System.out.println("Message: " + warn.getmessage()); 24. System.out.println("SQLState: " + warn.getsqlstate()); 25. System.out.print("Vendor error code: "); 26. System.out.println(warn.getErrorCode()); 27. System.out.println(""); 28. warn = warn.getnextwarning(); 29. } 30. } Δρ. Κεραμόπουλος Ευκλείδης 20

Με χρήση του scroll ο δρομέας του resultset μπορεί να κινηθεί ευέλικτα προς οποιαδήποτε κατεύθυνση και με βήμα που ορίζεται από τον προγραμματιστή ή τον χρήστη. Πρώτα πρέπει να δημιουργηθεί ένα αντικείμενο ResultSet που υποστηρίζει την ιδιότητα scroll. Statement stmt = con.createstatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executequery("select SNAME " + "FROM SAILORS"); Δρ. Κεραμόπουλος Ευκλείδης 21

TYPE_FORWARD_ONLY Μόνο μπροστά TYPE_SCROLL_INSENSITIVE όσο ο δρομέας είναι ανοιχτός δεν γίνονται οι αλλαγές στη βάση TYPE_SCROLL_SENSITIVE όσο ο δρομέας είναι ανοιχτός γίνονται οι αλλαγές στη βάση CONCUR_READ_ONLY Μόνο για ανάγνωση CONCUR_UPDATABLE Ανανεώσιμη default TYPE_FORWARD_ONLY, CONCUR_READ_ONLY Δρ. Κεραμόπουλος Ευκλείδης 22

next Previous first Last afterlast beforefirst (προσοχή δεν δουλεύει στην IBM DB2) absolute no relative no getrow Δίνει τη θέση του δρομέα Παράδειγμα srs.absolute(4); int rownum = srs.getrow(); // θέση 4 srs.relative(-3); rownum = srs.getrow(); // θέση 1 srs.relative(2); rownum = srs.getrow(); // θέση 3 Δρ. Κεραμόπουλος Ευκλείδης 23

isfirst, islast, isbeforefirst isafterlast if (!srs.isafterlast()) { String name = srs.getstring("cof_name"); float price = srs.getfloat("price"); System.out.println(name + " " + price); } Δρ. Κεραμόπουλος Ευκλείδης 24

Statement stmt = con.createstatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executequery( "SELECT COF_NAME, PRICE FROM COFFEES"); srs.afterlast(); float price while (srs.previous()) { } String name = srs.getstring("cof_name"); price = srs.getfloat("price"); System.out.println(name + " " + price); Δρ. Κεραμόπουλος Ευκλείδης 25

1. package newpackage; 2. import java.sql.*; 3. public class Jdbc_mini_select_scroll_various_postgres1 { 4. static String driverclassname = "org.postgresql.driver" ; 5. static String url = "jdbc:postgresql://localhost:5432/postgres" ; 6. static Connection dbconnection = null; 7. static Statement statement = null; 8. static ResultSet rs = null; 9. public static void main (String[] argv) throws Exception 10. { 11. Class.forName (driverclassname); 12. dbconnection = DriverManager.getConnection (url, "postgres", "postgres"); 13. statement = dbconnection.createstatement(resultset.type_scroll_sensitive, ResultSet.CONCUR_UPDATABLE); Δρ. Κεραμόπουλος Ευκλείδης 26

14. String selectstring = "SELECT sid, sname, rating, age " + 15. "From Sailors " + 16. "Order by sid"; 17. rs = statement.executequery(selectstring); 18. rs.first(); 19. System.out.println("sid sname rating age " ); 20. rs.absolute(6); 21. int id = rs.getint("sid"); 22. String name = rs.getstring("sname"); 23. int vrating = rs.getint("rating"); 24. float vage = rs.getfloat("age"); 25. System.out.println("absolute 6"); 26. System.out.println( id + " " + name + " " + vrating + " " + vage ); 27. rs.relative(-3); 28. id = rs.getint("sid"); 29. name = rs.getstring("sname"); 30. vrating = rs.getint("rating"); 31. vage = rs.getfloat("age"); 32. System.out.println("relative -3"); 33. System.out.println( id + " " + name + " " + vrating + " " + vage ); Δρ. Κεραμόπουλος Ευκλείδης 27

34. rs.relative(2); 35. id = rs.getint("sid"); 36. name = rs.getstring("sname"); 37. vrating = rs.getint("rating"); 38. vage = rs.getfloat("age"); 39. System.out.println("relative 2"); 40. System.out.println( id + " " + name + " " + vrating + " " + vage ); 41. rs.beforefirst(); 42. System.out.println("before first"); 43. rs.beforefirst(); 44. while(rs.next()) { 45. id = rs.getint("sid"); 46. name = rs.getstring("sname"); 47. vrating = rs.getint("rating"); 48. vage = rs.getfloat("age"); 49. System.out.println( id + " " + name + " " + vrating + " " + vage ); 50. } 51. statement.close(); 52. dbconnection.close(); 53. } 54. } Δρ. Κεραμόπουλος Ευκλείδης 28

run: sid sname rating age absolute 6 64 Horatio 7 35.0 relative -3 31 Lubber 8 55.5 relative 2 58 Rusty 10 35.0 before first 22 Dustin 7 45.0 29 Brutus 1 33.0 31 Lubber 8 55.5 32 Andy 8 25.5 58 Rusty 10 35.0 64 Horatio 7 35.0 71 Zorba 10 16.0 74 Horatio 9 40.0 85 Art 3 25.5 95 Bob 3 63.5 BUILD SUCCESSFUL (total time: 0 seconds) Δρ. Κεραμόπουλος Ευκλείδης 29

ΕΠΟΜΕΝΗ ΕΝΟΤΗΤΑ