JAVA και SQL Δαμιανός Χατζηαντωνίου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
MySQL + Γλώσσα Προγραμματισμού
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ Jena API
PL/SQL.
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Java A Crash Course in (Προσέγγιση μέσω UML)
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Google's Google App Engine and Google's Datastore API Andreas Manoli.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα.
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Εισαγωγή στον Προγ/μό Η/Υ
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Πίνακες και αλφαριθμητικά
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Java DataBase Connectivity
Εισαγωγή στον Προγ/μό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΚΕΦΑΛΑΙΟ 2 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Σχεσιακεσ βασεισ δεδομενων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Μεταγράφημα παρουσίασης:

JAVA και SQL Δαμιανός Χατζηαντωνίου Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς

Eπικοινωνία με διεπαφή JDBC/ODBC - Γενικά Σε αυτή την περίπτωση εισάγουμε ένα επίπεδο μεταξύ γλώσσας προγραμματισμού και Β.Δ., μέσω του οποίου γίνεται η επικοινωνία τους. Υπάρχει το ODBC (γενικής εφαρμογής) και το JDBC (για γλώσσα Java). Ποια είναι η διαφορά με την ενσωματωμένη SQL ??? Η επικοινωνία με τη ΒΔ γίνεται με system calls της host γλώσσας προγραμματισμού. Συνεπώς, για κάθε διαφορετικό ΣΔΒΔ πρέπει να δημιουργείται και διαφορετικό σύνολο system calls. Αυτό συνεπάγεται ότι για ν ΣΔΒΔ θα υπάρχουν ν implementations. Αντίθετα, με ένα ενδιάμεσο επίπεδο, αρκεί η γλώσσα να «μιλάει» με αυτό (DB-independent.) Νο free lunch: κόστος -> αποδοτικότητα

Eπικοινωνία με διεπαφή JDBC/ODBC - ODBC Open Database Connectivity- Αναπτύχθηκε από τη Microsoft Corp. Το ODBC είναι ένα ευρέως διαδεδομένο API (application programming interface) για πρόσβαση και χειρισμό βάσεων δεδομένων. Ο στόχος είναι κάθε εφαρμογή να έχει πρόσβαση σε οποιαδήποτε δεδομένα, ανεξαρτήτου συστήματος. Το ODBC δημιουργεί ένα middle layer (database driver) - μεταξύ της εφαρμογής (στην περίπτωση μας Java) και της Β.Δ. H Java στέλνει SQL στο ODBC και περιμένει την απάντηση.

Eπικοινωνία με διεπαφή JDBC/ODBC - ODBC Αυτό το layer μεταφράζει τα ερωτήματα της εφαρμογής σε εντολές που καταλαβαίνει η Β.Δ Η SQL χρησιμοποιείται σαν η γλώσσα πρόσβασης στη Β.Δ. Oracle Application A ODBC Driver for Oracle Application B ODBC Driver for IBM DB2 DB2 ODBC Driver for SQL Server Application C SQL Server Application D

Eπικοινωνία με διεπαφή JDBC/ODBC - ODBC To open Data Sources (ODBC), click Start, point to Settings, and then click Control Panel. Double-click Administrative Tools, and then double-click Data Sources (ODBC). For information about using Data Sources (ODBC), click Help in the ODBC Data Source Administrator dialog box.

Eπικοινωνία με διεπαφή JDBC/ODBC - JDBC Type 1: JDBC-ODBC bridge; Μεταφράζει standard JDBC calls σε ένα αντίστοιχο ODBC call και το στέλνει στο ΣΔΒΔ. Type 2: απευθείας μετάφραση σε API άμεσης συγγένειας με το ΣΔΒΔ. Τα JDBC calls μεταφράζονται σε κάτο που το ΑΡΙ καταλαβαίνει. Type 3: middle-tiers Type 4: all-Java driver που στέλνει αιτήματα απευθείας στο ΣΔΒΔ. Όλα τα μεγάλα συστήματα ΔΒΔ έχουν τύπου-4 JDBC drivers.

Eπικοινωνία με διεπαφή JDBC/ODBC – Java Σύνδεση με τη ΒΔ Εκτέλεση ενός SQL αιτήματος. Μπορεί να είναι δύο ειδών: select...from...where insert/update/delete Αποσύνδεση με τη ΒΔ

Eπικοινωνία με διεπαφή JDBC/ODBC – Σύνδεση με ΒΔ Πρέπει να εισάγουμε τα κατάλληλα packages στο πρόγραμμα μας: import java.sql.*; Connecting to database: Connection dbcon; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); dbcon = DriverManager.getConnection(“jdbc:odbc:employeedb”); Χρειάζεται να δηλώσουμε μία μεταβλητή τύπου Connection Πρέπει να δηλώσουμε τι είδους JDBC driver θα χρησιμοποιήσουμε Εάν είναι JDBC-ODBC bridge, πρέπει να δηλώσουμε το όνομα του ODBC

Eπικοινωνία με διεπαφή JDBC/ODBC – Εκτέλεση SQL Πρέπει να δηλώσουμε ένα SQL statement (όχι insert /delete/update), να το εκτελέσουμε και να πάρουμε το αποτέλεσμα. Statement stmt = dbcon.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM Employee ORDER BY Salary"); while (rs.next()) { out.println(rs.getString(“SSN")); out.println(rs.getString(“Name")); out.println(rs.getString(“Salary")); } rs.close(); stmt.close(); λογικός δρομέας όνομα γνωρίσματος

Eπικοινωνία με διεπαφή JDBC/ODBC – Εκτέλεση SQL Πρέπει να δηλώσουμε ένα SQL statement (insert/delete/update) και να το εκτελέσουμε. Statement stmt = dbcon.createStatement(); stmt.executeUpdate("UPDATE Employee SET Salary = Salary * 1.05”); stmt.close(); Τέλος πρέπει να κλείσουμε τη σύνδεση με τη ΒΔ: dbcon.close();

Eπικοινωνία με διεπαφή JDBC/ODBC – Java Παράδειγμα Το επόμενο παράδειγμα εισάγει έναν υπάλληλο, αφού πρώτα ελέγξει αν υπάρχει άλλος με το ίδιο SSN. import java.io.*; import java.text.*; import java.util.*; import java.sql.*; public class example { public static void main(String args[]) { Connection dbcon; String url = "jdbc:odbc:employeedb"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); dbcon = DriverManager.getConnection(url,“sa", ""); Statement stmt; ResultSet rs; int rec_counter; String SSN = “230102211”; String Name = “John Johnson”; int Salary = 4301; int DeptCode = 312;

Eπικοινωνία με διεπαφή JDBC/ODBC – Java Παράδειγμα Το επόμενο παράδειγμα εισάγει έναν υπάλληλο, αφού πρώτα ελέγξει αν υπάρχει άλλος με το ίδιο SSN (συνέχεια). stmt = dbcon.createStatement(); rs = stmt.executeQuery("SELECT * FROM Employee WHERE SSN=‘"+SSN+”’”); rec_counter=0; while (rs.next()) { rec_counter++; if (rec_counter==1) break; } rs.close(); if (rec_counter!=0) // SSN already exists System.out.println("Code already exists. Try again."); else // create new item stmt.executeUpdate("INSERT INTO Employee VALUES (‘“ + SSN + “’,’” + Name + ”’,” + Salary+”,” + DeptCode + ”)”); stmt.close(); dbcon.close();

Άσκηση Έστω ότι έχετε την ακόλουθη περιγραφή ενός πίνακα: Sales(cust_id int, prod_id int , day int, month int, year int, amount real) Γράψτε ένα Java πρόγραμμα που να παίρνει σαν παράμετρο τον αριθμό πελάτη και να υπολογίζει το σύνολο των αγορών του το μήνα Ιούνιο του 2001.

Λύση import java.io.*; import java.text.*; import java.util.*; import java.sql.*; public class DBexample1 { public static void main(String args[]) { float total=0, amount; int month, year, cust; String url = "jdbc:odbc:salesdb"; Connection dbcon ; Statement stmt; ResultSet rs;

/* declare ODBC conectivity */ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.out.print("ClassNotFoundException: "); System.out.println(e.getMessage()); /* execute SQL statements */ dbcon = DriverManager.getConnection(url,"",""); stmt = dbcon.createStatement(); rs = stmt.executeQuery("SELECT * FROM Sales"); while (rs.next()) { cust=rs.getInt("cust_id"); month=rs.getInt("month"); year=rs.getInt("year"); amount=rs.getFloat("amount"); if (cust==2 && month==6 && year==2001) total+=amount; rs.close(); System.out.println(total); stmt.close(); dbcon.close(); catch(SQLException e) System.out.print("SQLException: ");