Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Προσπέλαση Βάσης Δεδομένων με το Java Database Connectivity (JDBC)
Σκοποί ενότητας Σε αυτή την ενότητα ασχολούμαστε με την προσπέλαση Βάσεων Δεδομένων (ΒΔ) με το JDBC. 5
Περιεχόμενα ενότητας (1/2) JDBC Application Programming Interface (JDBC Api). Java DB-Apache Derby. Connection. PreparedStatement. Παράδειγμα. 6
Περιεχόμενα ενότητας (2/2) Αγγλικά ερωτηματικά. Επιλογή όλων των πελατών. Επιλογή συγκεκριμένου πελάτη. Περισσότερες πληροφορίες. 7
JDBC Api Τα προγράμματα σε JAVA χρησιμοποιούν για την επικοινωνία τους με τις βάσεις δεδομένων το JDBC Api. Για την σύνδεση στις βάσειν δεδομένων οι Java εφαρμογές χρησιμοποιούν ένα πρόγραμμα οδήγησης JDBC. Περισσότερες πληροφορίες για το JDBC: http://download.oracle.com/docs/cd/b10500_01/java.92 0/a96654.pdf. 8
Java DB-Apache Derby Από την έκδοση JDK 6 και μετά περικλείεται η ανοικτού κώδικα υλοποιημένη σε JAVA βάση δεδομένων Java DB. Πριν από οτιδήποτε θα πρέπει στις μεταβλητές περιβάλλοντος να ορίσουμε τον κατάλογο εγκατάστασης της JAVA. Αν υποθέσουμε ότι έχουμε την έκδοση 1.7 τότε θα πρέπει να ορίσουμε την μεταβλητή περιβάλλοντος JAVA_HOME σε JAVA_HOME=C:\Program Files\Java\jdk1.7.0_10. 9
Connection (1/2) Για να συνδέσουμε το πρόγραμμα με την βάση δεδομένων θα πρέπει να δημιουργήσουμε ένα αντικείμενο Connection και μέσω αυτού του αντικειμένου να επιτρέπεται ο χειρισμός της ΒΔ μέσω Structured Query Language - SQL ερωτημάτων. 10
Connection (2/2) Η αρχικοποίηση του connection γίνεται μέσω της static μεθόδου getconnection η οποία προσπαθεί να συνδεθεί στη ΒΔ σύμφωνα με τις παραμέτρους που της έχουμε δώσει. Στη συνέχεια μπορούμε να δημιουργήσουμε τα PreparedStatement που χρειαζόμαστε και να εισάγουμε, να ενημερώσουμε και να διαβάσουμε εγγραφές στην ΒΔ. 11
PreparedStatement Μέσω της διασύνδεσης PreparedStatement μπορείτε να δημιουργείτε μεταγλωττισμένες προτάσεις SQL. Η PreparedStatement μπορεί επίσης να έχει παραμέτρους, ώστε να λαμβάνουμε κάθε φορά διαφορετικές εγγραφές ανάλογα με την τιμή της παραμέτρου. Για παράδειγμα εάν θέλουμε να δούμε τους πελάτες με πόλη διαμονής Καστοριά τότε θα μπορούσαμε να ορίσουμε το PreparedStatement ως εξής: 12
Παράδειγμα (1/2) 13
Παράδειγμα (2/2) 14
Αγγλικά ερωτηματικά Τα αγγλικά ερωτηματικά στην εντολή Select και στην εντολή Insert είναι θέσεις για τις τιμές που θα εισαχθούν στο τμήμα ερωτήματος της βάσης δεδομένων. Παράδειγμα. 15
Επιλογή όλων των πελατών Η μέθοδος getallcustomers επιστρέφει μια λίστα με όλους τους πελάτες από τη βάση δεδομένων. Αυτό γίνεται εκτελώντας το PreparedStatement selectallcustomers και καλώντας την μέθοδο executequery η οποία επιστρέφει ένα ResultSet το οποίο περιέχει γραμμές που ταιριάζουν με το ερώτημα. Τα αποτελέσματα μπορούν να τοποθετηθούν σε μια συλλογή ArrayList. 16
Επιλογή συγκεκριμένου πελάτη (1/2) Αντίστοιχα μπορεί να δημιουργηθεί μέθοδος η οποία θα δέχεται μία παράμετρο και θα επιστρέφει το όνομα συγκεκριμένου πελάτη εκτελώντας το PreparedStatement selectcustomersbycity. Καλώντας την μέθοδο executequery η οποία επιστρέφει ένα ResultSet το οποίο περιέχει γραμμές που ταιριάζουν με το ερώτημα. Τα αποτελέσματα μπορούν να τοποθετηθούν σε μια συλλογή ArrayList. 17
Επιλογή συγκεκριμένου πελάτη (2/2) 18
Περισσότερες πληροφορίες Ολόκληρη την υλοποίηση του κώδικα μπορείτε να τον βρείτε στις ασκήσεις πράξεις. Περισσότερες πληροφορίες: Oracle JDBC: http://docs.oracle.com/javase/tutorial/jdbc/. Oracle JDBC basics: http://docs.oracle.com/javase/tutorial/jdbc/basics/. Netbeans wiki για JDBC: http://wiki.netbeans.org/getstartedwithjavadb. Tutorial: http://ferdidolot.wordpress.com/2009/06/14/javamysql-jdbc-tutorial-using-netbeans-part-1/. 19
Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. «Προγραμματισμός Internet και World Wide Web», Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 3. «Πλήρες εγχειρίδιο της Java 6», Lemay C, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 20
Τέλος Ενότητας 21