1
Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει στη βιβλιοθήκη του ΑΤΕΙΘ. 2
Το πρόγραμμα είναι εφαρμογή Java και έτσι έχει όλα τα προτερήματα ενός προγράμματος java. 3
To ODBC χρησιμοποιείται σπάνια πια. Το JDBC είναι προϊόν της Oracle SUN και έχει επικρατήσει στην αγορά. 4
Η αρχιτεκτονική ενός συστήματος το οποίο βασίζεται σε JDBC τεχνολογία αποτελείται από τέσσερα μέρη. Από τη μία πλευρά έχουμε την Java εφαρμογή και από την άλλη πλευρά τις πηγές δεδομένων, δηλαδή τους διακομιστές των Βάσεων Δεδομένων. Για να γίνει η σύνδεση και αλληλεπίδρασή τους χρησιμοποιείται ο διαχειριστής οδηγών ο οποίος «διαχειρίζεται» δ ί τους οδηγούς των Συστημάτων Βάσεων Δεδομένων που θα συνδεθεί η εφαρμογή. 5
Όταν χρησιμοποιούμε την τεχνολογία JDBC τότε η δική μας η δουλειά περιορίζεται στη συγγραφή του προγράμματος JAVA. Εκεί γράφουμε τον κώδικα που υλοποιεί την εφαρμογή μας ενώ όσο αφορά την αλληλεπίδρασή μας με τη βάση δεδομένων εκτελούμε τις παρακάτω ενέργειες: (α) ενεργοποιούμε την σύνδεση, (β) στέλνουμε SQL εντολές στο διακομιστή της Βάσης Δεδομένων, (γ) δεχόμαστε και διαχειριζόμαστε τα δεδομένα που μας στέλνει η Βάση τα οποία μπορεί να είναι είτε ένα μήνυμα ότι όλα πήγαν καλά, είτε αποτελέσματα ενός SELECT αιτήματος είτε κάποιο μήνυμα λάθους σχετικό με την εντολή SQL που ζητήσαμε να εκτελεστεί, και τέλος (δ) απενεργοποιούμε την σύνδεση 6
Ο διαχειριστής των οδηγών είναι ουσιαστικά μία τάξη η οποία περιέχει όλες τις μεθόδους για να διαχειριστούμε τους οδηγούς και να κάνουμε όλη την προετοιμασία για την σύνδεση με τη Βάση, να υλοποιήσουμε την αλληλεπίδραση μεταξύ εφαρμογής και Βάσης και τέλος μας δίνει τη δυνατότητα να κρατήσουμε και ιστορικό αρχείο. 7
Ο οδηγός είναι μία εφαρμογή η οποία μπορεί να έχει γραφτεί σε διάφορες γλώσσες προγραμματισμού, ακόμα και Java. Κάθε εταιρεία που εμπορεύεται ένα Σύστημα Διαχείρισης Βάσεων Δεδομένων φροντίζει στα πλαίσια του ανταγωνισμού να εφοδιάσει τους προγραμματιστές με τους κατάλληλους οδηγούς για σύνδεση με τη Βάση. Στην ιστοσελίδα http://java.sun.com/products/jdbc / /db και αφού επιλέξουμε Industry Support βρίσκουμε συνδέσεις με τις ιστοσελίδες των σημαντικότερων εταιρειών Βάσεων Δεδομένων από όπου μπορούμε να κατεβάσουμε τους οδηγούς. 8
9
Υπάρχουν τέσσερα είδη οδηγών τους οποίους θα τους μελετήσουμε αναλυτικά παρακάτω. 10
Ο τύπος 1 είναι ο παλιότερος τύπος που παρουσιάστηκε. Η εταιρεία που τον κατασκεύασε είναι η Microsoft. Ο οδηγός αυτός είναι αργός και παρέχεται με την εγκατάσταση της Java. 11
Ορίζεται από το «Πίνακα Ελέγχου» και τα «Εργαλεία Διαχείρισης». Από εκεί επιλέγουμε «Πηγές Δεδομένων». 12
Επιλέγουμε «DSN συστήματος» και «προσθήκη» 13
Επιλέγουμε τον κατάλληλο οδηγό. 14
Δίνουμε ένα όνομα στον οδηγό και τον αντιστοιχίζουμε με το τοπικό όνομα μιας Βάσης Δεδομένων. Αυτή μπορεί να είναι μία τοπική Βάση ή το τοπικό ψευδώνυμο μίας Βάσης η οποία βρίσκεται σε ένα απομακρυσμένο διακομιστή Βάσεων Δεδομένων. 15
Ο οδηγός έγινε διαθέσιμος για χρήση. 16
Ο δεύτερος τύπος είναι γραμμένος στη γλώσσα που έχει επιλέξει η εταιρεία του ΣΔΒΔ. Προφανώς μπορεί να είναι οποιαδήποτε (συνήθως C) και το πιθανότερο είναι ότι δεν είναι η Java. 17
Στον τρίτο τύπο πρέπει να επικοινωνήσει η εφαρμογή μας με ένα ενδιάμεσο λογισμικό (π.χ. στην τριών επιπέδων αρχιτεκτονική, ο application server) το οποίο με τη σειρά του επικοινωνεί με τη Βάση Δεδομένων με οποιοδήποτε τύπο οδηγού. 18
Είναι ο πιο γρήγορος οδηγός. Είναι γραμμένος σε Java και επικοινωνεί χωρίς κανένα ενδιάμεσο με το ΣΔΒΔ που μας ενδιαφέρει. 19
Οι τέσσερις τύποι οδηγού γραφικά. 20
Το πρώτο που πρέπει να γίνει είναι η σύνδεση με τη Βάση Δεδομένων. Αυτό επιτυγχάνεται με χρήση της Τάξης DriverManager. Η σύνδεση γίνεται σε δύο στάδια. Πρώτα φορτώνουμε τον οδηγό και μετά υλοποιούμε την σύνδεση. 21
Το πρώτα που πρέπει να γίνει είναι η σύνδεση με τη Βάση Δεδομένων. Αυτό επιτυγχάνεται με χρήση της Τάξης DriverManager. Η σύνδεση γίνεται σε δύο στάδια. Πρώτα φορτώνουμε τον οδηγό και μετά υλοποιούμε την σύνδεση. 22
Η φόρτωση του οδηγού γίνεται με την μέθοδο forname της τάξης Class. Για παράμετρο παίρνει το όνομα του οδηγού (driverclassname). Στην περίπτωση των ODBC οδηγών η παράμετρος είναι πάντα driverclassname = "sun.jdbc.odbc.jdbcodbcdriver"; Στην περίπτωση των JDBC οδηγών η παράμετρος εξαρτάται από το ΣΔΒΔ Για παράδειγμα: Η παράμετρος για την Postgres είναι driverclassname = "org.postgresql.driver Η παράμετρος για την IBM DB2 είναι driverclassname = "com.ibm.db2.jcc.db2driver" 23
Η υλοποίηση της σύνδεσης γίνεται με τη μέθοδο DriverManager.getConnection αποθηκεύεται σε ένα αντικείμενο της τάξης Connection. Παίρνει τρεις παραμέτρους. (α) το url. 1. για ODBC οδηγούς το url είναι πάντα «jdbc:odbc:όνομα_οδηγού» ό δ ύ To όνομα οδηγού είναι αυτό που ορίσαμε στις διαφάνειες 12 16. 2. για JDBC οδηγούς πρέπει να συμβουλευτούμε τις οδηγίες που συνοδεύουν τον οδηγό. Στα εργαστηριακά μας μαθήματα θα χρησιμοποιήσουμε παραδείγματα όπως φαίνονται στη διαφάνεια. 24
Για να στείλουμε οποιαδήποτε εντολή SQL θα πρέπει να χρησιμοποιήσουμε ένα αντικείμενο της τάξης Statement. Αυτό δημιουργείται με την εντολή: Statement stmt = con.createstatement(); Η μεταφορά των εντολών SQL στη Βάση για εκτέλεση χωρίζεται σε δύο κατηγορίες. Στην εντολή SELECT και σε όλες τις άλλες. Η εντολή SELECT εκτελείται με τη μέθοδο executequery ενώ όλες οι άλλες με την μέθοδο executeupdate. 25
26
Εδώ παρουσιάζονται οι μέθοδοι που χρησιμοποιούνται για κατέβασμα τιμών από τη Βάση σε αντίστοιχες μεταβλητές στην java. 27
28
29
30
1. Φορτώνεται η βιβλιοθήκη java.sql.* η οποία περιέχει όλες τις τάξεις που χρειάζονται για την υλοποίηση της διεπαφής JDBC. 2. Δηλώνεται η κύρια κλάση του προγράμματος. 3. Δηλώνεται μία αλφαριθμητική μεταβλητή η οποία περιέχει το όνομα του οδηγού. Στο παράδειγμα μας είναι JDBC. 4. Δηλώνεται το url μίας βάσης όπως την υλοποιήσαμε με το εργαλείο των windows που περιγράφεται στις διαφάνειες 6 12. Μπορεί να είναι οποιαδήποτε ΣΔΒΔ. 5. Δηλώνεται ένα αντικείμενο Connection το θα διαχειρίζεται τα στοιχεία της σύνδεσης. 6. Δηλώνεται ένα αντικείμενο Statement το οποίο θα χρησιμοποιηθεί για την αλληλεπίδραση με τη βάση. 7. Δηλώνεται η κύρια μέθοδος του προγράμματος. 8. Φορτώνεται ο οδηγός. 9. Γίνεται η σύνδεση. 10. Συνδέεται το αντικείμενο Statement με τη βάση. 11. Δημιουργείται ο πίνακας Sailors με χρήση της μεθόδου executeupdate 31
16. Δημιουργείται ο πίνακας Boats με χρήση της μεθόδου executeupdate 20. Δημιουργείται ο πίνακας Reserves με χρήση της μεθόδου executeupdate 27. To αντικείμενο statement καταστρέφεται. 28. Η σύνδεση κλείνει. 32
33
34
35
36
37
38
39
4. Δηλώνεται το url της τοπικής Βάσης της DB2 με το ψευδώνυμο LIBRARY. 40
41
42
4. Σύνδεση με τη Βάση db2lab1 της postgres στον αετό. 43
44
45
46
47
48
49
50