Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

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

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

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

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

5 Βάσεις Δεδομένων I - ΔΤΨΣ 5 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.

6 Βάσεις Δεδομένων I - ΔΤΨΣ 6 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.

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

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

9 Βάσεις Δεδομένων I - ΔΤΨΣ 9 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(); όνομα γνωρίσματος λογικός δρομέας

10 Βάσεις Δεδομένων I - ΔΤΨΣ 10 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();

11 Βάσεις Δεδομένων I - ΔΤΨΣ 11 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 = “ ”; String Name = “John Johnson”; int Salary = 4301; int DeptCode = 312;

12 Βάσεις Δεδομένων I - ΔΤΨΣ 12 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(); }

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

14 Βάσεις Δεδομένων I - ΔΤΨΣ 14 Λύση 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;

15 Βάσεις Δεδομένων I - ΔΤΨΣ 15 /* 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 */ try { 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: "); System.out.println(e.getMessage()); }


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google