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

Σχετικά έγγραφα
ΚΩΔΙΚΑΣ ΔΕΟΝΤΟΛΟΓΙΑΣ

ΠΡΟΒΛΗΜΑΤΑ ΤΗΣ ΔΗΜΟΣΙΑΣ ΖΩΗΣ, ΜΙΑ ΨΥΧΑΝΑΛΥΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ

ΧΙΙΙ Επιτροπή Εκπαιδευτικής Υπηρεσίας

ΠΡΟΕΤΟΙΜΑΣΙΑ ΓΙΑ ΣΥΝΕΝΤΕΥΞΗ. Βασικές συμβουλές

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

ΠΑΙΔΑΓΩΓΙΚΗ ΣΧΟΛΗ (ΦΛΩΡΙΝΑ) ΤΜΗΜΑ ΝΗΠΙΑΓΩΓΩΝ ΕΡΓΑΣΤΗΡΙΟ ΔΙΔΑΚΤΙΚΗΣ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΠΑΡΑΓΩΓΗΣ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ

Συνωμοσία Πυρήνων της Φωτιάς - Πυρήνας Αντάρτικου Πόλης

Ο αρτινός συγγραφέας Γιάννης Καλπούζος, μιλάει στην «Γ», με την ευκαιρία της έκδοσης του νέου του βιβλίου

Πρακτικό εργαλείο. για την ταυτοποίηση πρώτου επιπέδου των θυμάτων παράνομης διακίνησης και εμπορίας. τη σεξουαλική εκμετάλλευση

ΑΣΦΑΛΙΣΗ ΑΥΤΟΚΙΝΗΤΟΥ

Κατερίνα Παναγοπούλου: Δημιουργώντας κοινωνικό κεφάλαιο την εποχή της κρίσης

Τοποθέτηση Δημάρχου Γ. Πατούλη. για τεχνικό πρόγραμμα 2010

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

Η Ψυχοπαθολογία του Πολιτικού Του Φ.Μωρόγιαννη *

Δρ.ΠΟΛΥΚΑΡΠΟΣ ΕΥΡΙΠΙΔΟΥ

Μαρία-Στεφανία-Γιάννης 1 ο Πρότυπο Πειραματικό Δημοτικό Σχολείο Θεσσαλονίκης Ε2 Π.Τ.Δ.Ε.-Α.Π.Θ

Σοφία Γιουρούκου, Ψυχολόγος Συνθετική Ψυχοθεραπεύτρια

Ασυντήρητες και επικίνδυνες οικοδομές

8 Μάρτη. Η βία κατά των γυναικών

Συνοπτική Παρουσίαση. Ελλάδα

ΟΡΓΑΝΩΣΗ ΕΝΟΤΗΤΩΝ Α ΤΑΞΗΣ ΕΝΟΤΗΤΑ 3

Ο αθλητισμός εμπνέεται από την ειρήνη. Η ειρήνη εμπνέεται από τον αθλητισμό.

ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΑΣ «ΚΑΤΟΙΚΙΔΙΑ ΖΩΑ»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΔΙΔΑΣΚΑΛΕΙΟ ΔΗΜΟΤΙΚΗΣ ΕΚΠΑΙΔΕΥΣΗΣ «ΑΛΕΞΑΝΔΡΟΣ ΔΕΛΜΟΥΖΟΣ» «ΠΑΙΔΙΚΗ ΛΟΓΟΤΕΧΝΙΑ ΚΑΙ ΕΙΔΙΚΗ ΑΓΩΓΗ» ΔΙΔΑΣΚΩΝ: ΔΗΜΗΤΡΗΣ ΚΟΚΚΙΝΟΣ

ΚΕΦΑΛΑΙΟ 3 ο ΤΟ ΜΕΛΛΟΝ ΤΗΣ ΕΥΡΩΠΑΪΚΗΣ ΕΝΩΣΗΣ. 3.1 Εισαγωγή

Ηλεκτρικό φορτίο Ηλεκτρική δύναμη

γραμματισμό των νηπίων

Αυτός που δεν μπορεί να δει τα μικρά πράγματα είναι τυφλός και για τα μεγαλύτερα. (Κομφούκιος, πχ)

Η ΑΣΤΡΟΝΟΜΙΑ ΣΤΗΝ ΑΡΧΑΙΑ ΕΛΛΑΔΑ

Το ολοκαύτωμα της Κάσου

Οι ιοί και οι ιογενείς λοιμώξεις του αναπνευστικού συστήματος στα παιδιά

ΠΑΡΟΥΣΙΑΣΗ ΤΩΝ ΓΕΝΙΚΩΝ ΚΑΙ ΕΙΔΙΚΩΝ ΟΡΩΝ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ «ΑΣΦΑΛΩΣ ΚΑΤΟΙΚΕΙΝ» ΚΟΙΝΟΧΡΗΣΤΟΙ ΧΩΡΟΙ

ΑΝΑΚΥΚΛΩΣΗ ΤΗΓΑΝΕΛΑΙΟΥ ΓΙΑΤΙ - ΠΩΣ - ΠΟΤΕ

ΘΕΜΑ: «Καλλιέργεια προφορικών δεξιοτήτων των νηπίων: Διδακτικές δραστηριότητες του προφορικού λόγου στο νηπιαγωγείο»

Φλωρεντία, 10 Δεκεμβρίου 1513 Προς τον: ΦΡΑΓΚΙΣΚΟ ΒΕΤΤΟΡΙ, Πρέσβη της Φλωρεντίας στην Αγία Παπική Έδρα, Ρώμη. Εξοχώτατε Πρέσβη,

Η ΔΙΑΘΕΜΑΤΙΚΗ ΤΗΣ ΔΙΑΘΕΜΑΤΙΚΗΣ

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

ΠΑΡΑΡΤΗΜΑ 7 ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΟΧΗΣ ΔΙΑΣΥΝΔΕΣΗΣ

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

ΔΙΑΔΟΣΗ ΘΕΡΜΟΤΗΤΑΣ Φυσική Β' Γυμνασίου. Επιμέλεια: Ιωάννης Γιαμνιαδάκης

Σχολικός εκφοβισµός και γονείς

ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΔΙΚΑΙΟΥ. Ενότητα 7: Σχέση δικαίου-ηθικής-πολιτικής. Παρούσης Μιχαήλ. Τμήμα Φιλοσοφίας

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

1. Εισαγωγή. 2. Καταπολέμηση της φοροδιαφυγής

ΓΕΝΙΚΕΣ ΑΡΧΕΣ ΑΧΡΗΜΑΤΗΣ ΚΟΙΝΩΝΙΑΣ

Ατομικό ιστορικό νηπίου

μέρους του και εξυπηρέτηση του υπόλοιπου με ρήτρα ανάπτυξης και απασχόλησης Με επαρκή φορολόγηση του πλούτου, των μεγάλων περιουσιών και εισοδημάτων

Σεπτέμβριος 2011: Εφημερίδα μηνός Αυγούστου, έκδ. 34 η

Το ρολόι που κρατάς στα χέρια σου κρύβει ένα μυστικό: το μυστικό της κόκκινης ομάδας. Αν είσαι αρκετά τολμηρός, μπορείς κι εσύ να ενημερωθείς για τα

Kεντρικός συντονισμός πολιτικών, μόνιμοι υφυπουργοί, μείωση ειδικών συμβούλων, κατάργηση αναπληρωτών.

03-00: Βιομάζα για παραγωγή ενέργειας Γενικά ζητήματα εφοδιαστικών αλυσίδων

Λίγα λόγια από το συγγραφέα Microsoft Excel Η δομή ενός φύλλου εργασίας... 21

Ταυτοποίηση Κυπριακής Φιλοξενίας. Πρότυπο κάτω από το εθνικό σήμα: «φ»

11. Προϋπολογισμός Προϋπολογισμός και αποδοτικότητα δημοσίων υπηρεσιών: υφιστάμενη κατάσταση

ΑΝΑΝΕΩΣΙΜΕΣ ΠΗΓΕΣ ΕΝΕΡΓΕΙΑΣ (Α.Π.Ε)

Η ποιότητα ζωής στις Σέρρες σήμερα

ΕΘΙΜΑ ΤΟΥ ΚΟΣΜΟΥ. Αγγελική Περιστέρη Α 2

ΚΑΝΟΝΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ

Από το ξεκίνημά του ο ΤΙΤΑΝ εκφράζει

4. ΤΟ ΠΡΟΤΥΠΟ ΥΠΟΔΕΙΓΜΑ ΔΙΕΘΝΟΥΣ ΕΜΠΟΡΙΟΥ

Εργαστηριακή εξάσκηση στις διαταραχές της κίνησης και της οπτικής αντίληψης. Διδάσκων :Α.Β.Καραπέτσας

...ακολουθώντας τη ροή... ένα ημερολόγιο εμψύχωσης

Προδημοσιεύτηκαν τα τέσσερις πρώτα προγράμματα του νέου ΕΣΠΑ που αφορούν

αρχαιολόγος- μουσειολόγος- ξεναγός, ΜΑ

Ο Στρατηγικός Ρόλος της Αστυνοµίας στις Σύγχρονες Απαιτήσεις της Ελληνικής Κοινωνίας

TEI ΚΑΛΑΜΑΤΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ

ΕΥΡΩΠΑΪΚΟ ΚΟΙΝΟΒΟΥΛΙΟ ΓΡΑΦΕΙΟ ΓΙΑ ΤΗΝ ΕΛΛΑΔΑ Η ΜΕΤΑΡΡΥΘΜΙΣΤΙΚΗ ΣΥΝΘΗΚΗ

Δημήτρης Αγοραστός Ψυχολόγος

5 η Ενότητα Κουλτούρα και στρατηγική

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

Αρωματικά φυτά της Ελλάδας

ΚΕΦ. 1 Η ΛΟΓΙΣΤΙΚΗ ΚΑΙ Η ΣΗΜΑΣΙΑ ΤΗΣ ΣΤΙΣ ΕΠΙΧΕΙΡΗΣΕΙΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΠΕΡΙΦΕΡΕΙΑΚΗ ΕΦΟΡΕΙΑ ΑΘΗΝΩΝ. Αθήνα, 19 Ιανουαρίου 2015 Α ΝΑΚΟΙΝΩΣΗ 3/15. ΠΡΟΣ : Όλους τους Βαθμοφόρους της Αθήνας ΚΟΙΝΟΠΟΙΗΣΗ :

Μέθοδοι διαχωρισμού των συστατικών ενός ετερογενούς μείγματος

Πρόγραμμα Σπουδών για το "Νέο Σχολείο"

Χημεία Β Γυμνασίου Τμήμα Β3. Γρηγόρης Μαγουλάς Φανή Μανούσου Κύρος Μαλλαμίδης Ελίνα Μάλλιαρη Μάγδα Μαντά

για να δούμε πως είναι τα πράγματα:

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΩΜΑ 13 Α' ΜΕΡΟΣ ΑΠΟ ΤΟΝ ΠΟΛΕΜΟ ΤΟΥ 1897 ΣΤΟ ΓΟΥΔΙ

Υποψήφιοι Σχολικοί Σύμβουλοι

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΙΟΙΚΗΣΗΣ ΟΙΚΟΝΟΜΙΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Σε ποιες κατηγορίες μειώνεται η σύνταξη από 1/1/2009 (σε εφαρμογή του Ν.3655/2008)

Οι Πνευματικές Δυνάμεις στο Σύμπαν

ΚΩ ΙΚΑΣ ΕΟΝΤΟΛΟΓΙΑΣ ΤΗΣ ΕΤΑΙΡΕΙΑΣ ΜΕ ΤΗΝ ΕΠΩΝΥΜΙΑ «ΠΑΠΟΥΤΣΑΝΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΤΑΝΑΛΩΤΙΚΩΝ ΑΓΑΘΩΝ»

Έρευνα συμπεριφοράς και προτιμήσεων καταναλωτών και μερίδιο αγοράς που έχουν συγκεκριμένες πιάτσες των Χανίων.

Το Ευρωπαϊκό Κοινοβούλιο αποτελεί την άμεσα εκλεγμένη δημοκρατική έκφραση της πολιτικής βούλησης των λαών της Ευρώπης.

ΠΤΥΧΕΣ ΤΟΥ ΣΥΓΧΡΟΝΟΥ ΦΑΙΝΟΜΕΝΟΥ ΤΗΣ ΖΩΟΛΑΤΡΙΑΣ! ΛΑΜΠΡΟΥ Κ. ΣΚΟΝΤΖΟΥ Θεολόγου - καθηγητού Δε χρειάζεται να είναι κάποιος ειδικός για να διαπιστώσει

«Συλλογή, μεταφορά και διαχείριση επικίνδυνων στερεών αποβλήτων της Γ.Μ.Μ.Α.Ε. ΛΑΡΚΟ»


Βουλευτικές Εκλογές 2011

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

" Συμμετοχή στήν ψαλτή λατρεία"

Αξιοποιούμε το χαλκό με γνώμονα τον άνθρωπο

Αξιολόγηση του Εκπαιδευτικού Έργου. Διαδικασία Αυτοαξιολόγησης στη Σχολική Μονάδα

ΜΗΝΙΑΙΟ ΕΛΤΙΟ ΙΟΥΝΙΟΥ 2007

Leica ST5020. Multistainer. Συνοδευτικό φυλλάδιο Διαβάστε το προσεκτικά πριν από τη θέση σε λειτουργία

Οι 21 όροι του Λένιν

Α. ΟΡΓΑΝΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΕΦΑΡΜΟΓΗΣ

Ένας περίπατος στη Μονή Καισαριανής

ΦΥΣΙΚΗ ΚΑΤΑΣΤΑΣΗ. Βασίλης Γιωργαλλάς Καθηγητής Φυσικής Αγωγής

Transcript:

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

Σχεσιακές Βάσεις Δεδομένων Τα δεδομένα μας οργανώνονται σε ένα ή περισσότερους πίνακες: σε στήλες και σειρές Κάθε πίνακας έχει ένα όνομα και αποτελείται από στήλες (πεδία). Κάθε πεδίο έχει συγκεκριμένο τύπο και αποθηκεύει τιμές αυτού του τύπου Κάθε εγγραφή (π.χ. τα στοιχεία ενός προϊόντος) αποθηκεύεται σε μια γραμμή (πλειάδα) του πίνακα. Film code title director year 1150 The Godfather Francis Ford Coppola 1972 1151 The Shawshank Redemption Frank Darabont 1994

Συστήματα διαχείρισης ΒΔ Η βάση δεδομένων μπορεί να είναι ένα αρχείο ή ένα σύνολο αρχείων που το διαχειριζόμαστε μόνο με το κατάλληλο σύστημα (π.χ. MS Access, Oracle, SQL Server) Εκτός από το να αποθηκεύει τα δεδομένα, το ΣΔΒΔ μας επιτρέπει να υποβάλλουμε ερωτήσεις προς αυτά π.χ. φέρε μου τους τίτλους για τις ταινίες που βγήκαν το 1995 Για την υποβολή ερωτήσεων χρησιμοποιούμε τη γλώσσα SQL (Structured Query Language) Κάθε ερώτηση σε SQL μας επιστρέφει ως απάντηση μια λίστα με πλειάδες (recordset σύνολο εγγραφών)

Java και ΒΔ Για να επικοινωνήσει η εφαρμογή μας με μια βάση δεδομένων θα πρέπει: Να συνδεθούμε με το ΣΔΒΔ (όπως θα ανοίγαμε ένα ρεύμα εισόδου/εξόδου προς ένα αρχείο) Να συνδεθούμε με τη συγκεκριμένη ΒΔ (αν το σύστημα διατηρεί ταυτόχρονα πολλές ΒΔ). Να υποβάλλουμε ερωτήσεις SQL και Να διαχειριστούμε τη λίστα των εγγραφών που παίρνουμε ως απάντηση ερωτήσεις SQL Java Application Σύνδεση λίστα εγγραφών ΒΔ

Java Database Connectivity Το JDBC επιτρέπει στις εφαρμογές Java να συνδεθούν και να "ρωτήσουν" μια ΒΔ. Οι ερωτήσεις υποβάλλονται σε μια κοινή μορφή και μεταφράζονται στη μορφή που υποστηρίζει κάθε ΣΔΒΔ. Δεν υποστηρίζει ειδικές λειτουργίες του κάθε ΣΔΒΔ Το πακέτο java.sql περιέχει τις τάξεις για το JDBC 1.0 Το πακέτο javax.sql υποστηρίζει τα JDBC 2.0 και 3.0

Java Database Connectivity API (1) Υπάρχουν 4 κατηγορίες JDBC οδηγών: JDBC-ODBC bridge Native κώδικας και JDBC Γενικός JDBC driver γραμμένος σε Java JDBC driver σε Java Στον πρώτο τρόπο ο οδηγός έρχεται με το SDK. Στους άλλους τρεις ο οδηγός διατίθεται από το δημιουργό του ΣΔΒΔ ή κάποιον τρίτο.

JDBC-ODBC Bridge To Open DataBase Connectivity (ODBC) είναι ένα πρότυπο που ανέπτυξε η Microsoft για τα Windows. Κάθε ΣΔΒΔ που εγκαθιστούμε στα windows εγκαθιστά τον αντίστοιχο ODBC οδηγό. Οι ερωτήσεις προς τον οδηγό μετατρέπονται σε κλήσεις στο ΣΔΒΔ. Ο JDBC-ODBC οδηγός είναι ο μόνος τρόπος για να συνδεθούμε με μια ΒΔ σε Access. Ο ευκολότερος αλλά και πιο αργός τρόπος. Java application application process Data source ODBC process JDBC API JDBC-ODBC Bridge ODBC API ODBC Layer

Μικτός κώδικας (Java και Native) O οδηγός JDBC έχει κώδικα java αλλά και κώδικα σε C (συνήθως) και μιλά απευθείας με το ΣΔΒΔ Πρέπει όποιος θέλει να συνδεθεί με τη ΒΔ να κατεβάσει το σωστό JDBC οδηγό Πιο αποτελεσματικό και γρήγορο από το JDBC-ODBC bridge Java application application process Data source JDBC API JDBC Driver (part Java, part native code) Vendor-specific API

Χρήση ενδιάμεσου Server για την πρόσβαση Ένας ξεχωριστός server δίνει πρόσβαση στο ΣΔΒΔ. Ιδανική λύση για εσωτερικά δίκτυα (intranets). Οι δημιουργοί των ΣΔΒΔ παρέχουν τους επιπλέον servers που μιλούν με τις βάσεις τους και καταλαβαίνουν κλήσεις σε JDBC O οδηγός JDBC στον client μιλά με το JDBC server με κάποιο βασικό πρωτόκολλο Ο JDBC server μιλά με χρήση native οδηγού με τη βάση. Πολύ γρήγορη πρόσβαση Java application application process Data source network JDBC API JDBC Driver JDBC Driver Server Native Driver Intermediate data access server: Gateway for multiple database server

Καθαρός οδηγός Java Οι κλήσεις στον οδηγό JDBC μεταφράζονται σε κλήσεις στη βάση Απαιτεί από τον client να φορτώσει τον κατάλληλο οδηγό. Απλή αρχιτεκτονική και γρήγορη Οι δημιουργοί των ΣΔΒΔ παρέχουν τους pure java drivers Java application JDBC API application process JDBC Driver Data source network

O διαχειριστής των οδηγών Μια εφαρμογή μιλά ταυτόχρονα σε πολλές ΒΔ Με διαφορετικό τύπο οδηγού στην κάθε μια Για το λόγο αυτό υπάρχει ο JDBC Driver Manager O DriverManager είναι μια τάξη που περιέχεται στο βασικό πακέτο java.sql Έχει τη μέθοδο getconnection για να δημιουργούμε μια σύνδεση σε μια ΒΔ

Το μοντέλο του JDBC Τάξεις DriverManager, διαχειρίζεται συνδέσεις σε ένα ή περισσότερα ΣΔΒΔ Connection, προσδιορίζει μία σύνδεση σε μια συγκεκριμένη ΒΔ Statement, περιέχει μια ερώτηση SQL που στέλνεται για εκτέλεση στη ΒΔ ResultSet, περιέχει τα αποτελέσματα εκτέλεσης της ερώτησης SQL (έχει τη μορφή πίνακα με μία ή περισσότερες εγγραφές-records) SQL ResultSet Statement Driver Manager Connection Database SQL ResultSet Statement Connection Database

Βήματα χρήσης JDBC 1. Φορτώνουμε τον Driver. 2. Συνδεόμαστε με τη ΒΔ. Φτιάχνουμε ένα αντικείμενο Connection 3. Φτιάχνουμε μια δήλωση SQL (Statement) προς τη σύνδεση αυτή. 4. Εκτελούμε διαδοχικά (μια ή περισσότερες) ερωτήσεις SQL στο αντικείμενο Statement. Με χρήση της executequery ή executeupdate 5. Επεξεργαζόμαστε το αντικείμενο ResultSet που φτιάχνεται όταν κάνουμε ερωτήσεις επιλογής στο βήμα 4 6. Κλείνουμε τα Statement και Connection αντικείμενα. Class forname DriverManager getconnection Connection createstatement Statement

Βήματα χρήσης JDBC Σε ένα αντικείμενο Statement στέλνουμε SQL ερωτήσεις και ενημερώσεις προς τη βάση. Οι ερωτήσεις επιστρέφουν είτε ένα αντικείμενο ResultSet είτε το πλήθος εγγραφών που ενημερώθηκαν. SQL Select... Statement executequery ResultSet SQL Delete... Statement executeupdate int

Παράδειγμα Έστω ότι έχω εγκαταστήσει το ΣΔΒΔ Oracle στο μηχάνημα με IP διεύθυνση 10.100.51.123 Η Oracle δέχεται κλήσεις στο port 1521 Στο ΣΔΒΔ έχω φτιάξει μια δική μου βάση δεδομένων που λέγεται test Για να συνδεθώ στη βάση χρησιμοποιώ όνομα/κωδικό: test/test Στη βάση αυτή υπάρχει ο πίνακα Film που εμφάνισα σε προηγούμενη διαφάνεια.

1. Σύνδεση με τη βάση Jdbc:<subprotocol>:<subname> try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url ="jdbc:oracle:thin:@//10.100.51.123:1521/orcl"; Connection con = DriverManager.getConnection(url, test", test");... } Πρέπει ο client να έχει τον αντίστοιχο οδηγό Αν έχω Windows και θέλω να χρησιμοποιήσω τον πρώτο τύπο driver, φτιάχνω ένα νέο όνομα πηγής δεδομένων στο OBDC των Windows (έστω με όνομα dsn) και φορτώνω τον αντίστοιχο οδηγό. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url ="jdbc:odbc:dsn";

jdbc:odbc:dsn Πρωτόκολλο: πάντα JDBC Υπο-πρωτόκολλο: ορίζει το ΣΔΒΔ Όνομα: διεύθυνση του database server, port, όνομα βάσης. Η σύνταξη εξαρτάται από τον οδηγό jdbc:oracle:thin:@//10.100.51.123:1521:orcl

2. Διαμόρφωση SQL ερωτήσεων try{... Statement stmt = con.createstatement(); String sqlselect = "SELECT Title, Director,Year FROM Film"; ResultSet rs = stmt.executequery(sqlselect); int rowschanged = stmt.executeupdate("update Film set Year=1971 WHERE Title='Birds' ");...} Όλη η επικοινωνία με τη ΒΔ γίνεται μέσα σε ένα βρόχο try που ακολουθείται από διαδικασίες ανίχνευσης λάθους (SQLException κλπ.)

Διαχείριση αποτελεσμάτων Το ResultSet έχει ένα εσωτερικό δείκτη που μπορεί να μετακινηθεί μπρος/πίσω. Κάθε φορά μπορούμε να πάρουμε τις τιμές της τρέχουσας εγγραφής Μέθοδοι: next(), previous(), first(), last(). Μετακινούν το δείκτη και επιστρέφουν true αν υπάρχει εγγραφή εκεί που πάει ο δείκτης. π.χ. αν ο δείκτης είναι στην αρχή η Previous() επιστρέφει false κ.ο.κ. Οι islast() και isfirst() ελέγχουν την τρέχουσα θέση του δείκτη Εσωτερικός δείκτης ResultSet Record 1 Record 2 Record 3 Record 4

3. Εμφάνιση αποτελεσμάτων try { ResultSet rs = stmt.executequery(sqlselect); while(rs.next()){ title = rs.getstring(1); director = rs.getstring(2); year = rs.getint(3); row+=title+ +director+ +year+ \n ; } stmt.close(); //κλείσιμο της δήλωσης con.close(); //κλείσιμο της σύνδεσης } catch(exception e) { }

Ακύρωση και υποβολή ερώτησης Εξ ορισμού κάθε ερώτηση που γίνεται στη ΒΔ υποβάλλεται (γίνεται και commit) Αν θέλουμε να κάνουμε πολλαπλές ερωτήσεις/ενημερώσεις και στο τέλος να υποβάλλουμε τα αποτελέσματα: απενεργοποιούμε την αυτόματη υποβολή. connection.setautocommit(false) και καλούμε connection.commit() connection.rollback() για να εφαρμόσουμε τις αλλαγές για να ακυρώσουμε τις αλλαγές ως την τελευταία εφαρμογή

Τεχνικές πρόσβασης στη ΒΔ 22

Παράδειγμα: JDBC import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; //... try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=some"); // Do something with the Connection //... } catch (SQLException ex) { / / handle any errors System.out.println("SQLException: " + ex.getmessage()); System.out.println("SQLState: " + ex.getsqlstate()); System.out.println("VendorError: " + ex.geterrorcode()); //... MySQL Connector/J Documentation

Παράδειγμα: JDBC (συνέχ.) ResultSet rs = null; try { stmt = conn.createstatement(); rs = stmt.executequery("select foo FROM bar"); // or alternatively, if you don't know ahead of time that // the query will be a SELECT... if (stmt.execute("select foo FROM bar")) { rs = stmt.getresultset(); } // Now do something with the ResultSet... } catch (SQLException sqe) { // it is a good idea to release }

Πλαίσια απεικόνισης αντικειμένων σε σχεσιακό Τι προσφέρουν Διαφανή υποστήριξη «παραμενόντων αντικειμένων» (transparent persistence) Caching Διαχείριση δοσοληψιών (Transaction management) Που θα βρω πληροφορίες https://docs.oracle.com/javaee/7/tutorial/partp ersist.htm#bnbpy

Ένα παράδειγμα με το Hibernate Δύο κλάσεις του πεδίου εφαρμογής: Book Author Με σχέση πολλά προς πολλά.

Η κλάση Book package example; @Entity public class Book { @Id @GeneratedValue private Integer id; private String title; private String subtitle; @ManyToMany private Set<Author> authors = new HashSet<Author>(); private Date publicationdate; public Book() { } // standard getters/setters follow here... }

Η κλάση Author package example; @Entity public class Author { @Id @GeneratedValue private Integer id; private String name; public Author() { } // standard getters/setters follow here... }

Η κλάση Book Manager class BookManager { private void createandstorebook(string title, Date thedate) { Session session = HibernateUtil.currentSession(); Transaction tx = session.begintransaction(); } } Book abook = new Book(); abook.settitle( Introduction to Software Engineering ); //... session.save(thebook); tx.commit(); HibernateUtil.closeSession();