Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Συστήματα Διαχείρισης Βάσεων Δεδομένων Τίμος Σελλής, Καθηγητής ΕΜΠ, Διευθυντής ΙΠΣΥΠ, Ε.K. “Αθηνά”
MySQL + Γλώσσα Προγραμματισμού
Ανάπτυξη επιχειρησιακών εφαρμογών Πρότυπα σχεδίασης, πλαίσια και ενδιάμεσο λογισμικό Ανδρέας Παπασαλούρος Τμήμα Μαθηματικών
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
PL/SQL.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
JAVA και SQL Δαμιανός Χατζηαντωνίου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
Scala Programming Language
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
1 26/6/2015 Προγραμματισμός Διαδικτύου – Lecture 8 LECTURE 8 Using Databases with PHP Scripts: Using MySQL Database with PHP Προγραμματισμός Διαδικτύου.
Αρχιτεκτονική Λογισμικού. Αρχιτεκτονική Συστήματος Λογισμικού Η Αρχιτεκτονική περιγράφει τη γενική στατική δομή του συστήματος, τα βασικά δομικά του στοιχεία,
Βάσεις Δεδομένων και Παγκόσμιος Ιστός Προγραμματιστική εργασία: «WebNews»
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 13 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (IV) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Προγραμματισμός Εφαρμογών Διαδικτύου Ενότητα 6: PHP & MySQL Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Μηχανογράφηση χρηματιστηριακού γραφείου για διαχείριση ομολόγων Πτυχιακή εργασία του Παρχαρίδη Παύλου Επιβλέπων καθηγητής : Κωνσταντίνος Γιακουστίδης.
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στον Προγ/μό Η/Υ
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Σύστημα διαχείρισης αρχείων (file system)
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Ασκήσεις στην Java-XML
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Πίνακες και αλφαριθμητικά
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Βάσεις Δεδομένων Ι Επανάληψη
Java DataBase Connectivity
Εισαγωγή στον Προγ/μό Υπολογιστών
Κατανεμημένα Συστήματα
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να κατανοήσουμε την έννοια της όψης της γλώσσας SQL. Χ. Σκουρλάς.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Δομές διακλάδωσης, επαναλήψεις, μέθοδοι
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βάσεις Δεδομένων Κωδικός Μαθήματος: MK741
ΚΕΦΑΛΑΙΟ 2 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA
Πρωτογενείς τύποι δεδομένων
ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΙΚΤΥΑΚΩΝ ΕΦΑΡΜΟΓΩΝ
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Διασύνδεση με ΒΔ Web Server Database MySQL MSSQL Oracle PostgreSQL
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Σχεσιακεσ βασεισ δεδομενων
Εισαγωγή στη Java (Μέρος Α’)
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Εργαστήριο 1.
POSTGRESQL Η PostgreSQL είναι ένα αντικείμενο-σχεσιακό σύστημα διαχείρισης βάσεων δεδομένων (object relational database management system - ORDBMS) και.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βάσεις Δεδομένων 28/11/2018 Ενότητα Γ6.Μ2 (Βασικά Δομικά Συστατικά Στοιχεία και Κύρια Αντικείμενα μιας Βάσης Δεδομένων ) Ο Δάσκαλος.
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
Ενότητα 1: «Προσανατολισμού» (orientation) - Εισαγωγή Χ. Σκουρλάς
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Υπο-τύποι και πολυμορφισμός
Server side προγραμματισμός Βάσεις δεδομένων PHP
Μεταγράφημα παρουσίασης:

Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ 210 - 772 2484 email: dora@telecom.ntua.gr http://ecourses.dbnet.ntua.gr

Δικτυακός Προγραμματισμός Περιεχόμενα JDBC JDBC Driver Types Architectures Driver Types Αναλυτικά, Υπέρ & Κατά Παραδείγματα χρήσης JDBC 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός JDBC Java Database Connectivity Αποτελεί ένα Java API για σύνδεση με βάσεις δεδομένων. Περιλαμβάνει μεθόδους για αναζήτηση (querying) και ενημέρωση δεδομένων (update). Είναι προσανατολισμένο για relational databases. Για την επικοινωνία με την βάση απαιτείται η χρήση οδηγών (drivers) διαφορετικών για κάθε βάση. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός JDBC Drivers (1) Αποτελούν βιβλιοθήκες Java (API) που παρέχονται συνήθως από τον κατασκευαστή της βάσης δεδομένων. Μετατρέπουν τις κλήσεις Java σε πρωτόκολλο που η βάση να μπορεί να καταλάβει. Χωρίζονται σε διαφορετικούς τύπους: Type 1: JDBC-ODBC Bridge Type 2: Native-API Type 3: Net-protocol Type 4: Native-protocol Από το site της sun μπορείτε να βρείτε τον driver που χρειάζεστε. http://developers.sun.com/product/jdbc/drivers 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός JDBC Drivers (2) JDBC Type I “Bridge” ODBC ODBC Driver Type II “Native” DBMS Type III “Middleware” Middleware Server Type IV “Pure” 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 1 JDBC Driver JDBC-ODBC Bridge Περιλαμβάνεται στο JRE Χρησιμοποιείται συνήθως αν δεν υπάρχει java driver για την συγκεκριμένη βάση. Μεταφράζει όλα τα JDBC calls σε ODBC (Open DataBase Connectivity) calls και τα στέλνει στον ODBC driver. Ο ODBC driver θα πρέπει να είναι εγκατεστημένος στο ίδιο client μηχάνημα. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 1 JDBC Driver Υπέρ Επιτρέπει το πρόσβαση σχεδόν σε όλες τις βάσεις δεδομένου ότι ODBC drivers υπάρχουν για τις περισσότερες βάσεις του εμπορίου. Κατά Οι επιδόσεις δεν είναι καλές δεδομένου ότι τα JDBC calls δρομολογούνται διαμέσου του ODBC bridge στον τελικό οδηγό και από εκεί στην βάση. Ασφαλώς τα αποτελέσματα ακολουθούν την αντίστροφη διαδικασία για να επιστρέψουν. Δεν ενδείκνυται λοιπόν για μεγάλες εφαρμογές. Ο ODBC driver και το native connectivity interface πρέπει από πριν να είναι εγκατεστημένα στο μηχάνημα. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 2 JDBC Driver Native-API Δεν είναι όλο σε Java. Μεταφράζει JDBC calls σε databasespecific calls. Ο οδηγός επικοινωνεί κατευθείαν με τον database server αλλά απαιτεί την ύπαρξη binary code στον client για την επικοινωνία αυτή. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 2 JDBC Driver Υπέρ Οι type 2 drivers προσφέρουν καλύτερες αποδόσεις από τους οδηγούς JDBC-ODBC Bridge (type1). Κατά Τα vendor database library πρέπει να υπάρχουν σε κάθε μηχάνημα που απαιτεί πρόσβαση στη βάση. Οπότε αυτοί οι οδηγοί δεν μπορούν να χρησιμοποιηθούν στο Internet. Επίσης αν και πιο γρήγοροι από το Type 1 είναι πιο αργοί από τους οδηγούς Type 3 και Type 4. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 3 JDBC Driver Network-Protocol Είναι όλο γραμμένο σε Java. Ακολουθεί το three-tiered μοντέλο. Τα JDBC database requests περνάνε μέσα από το δίκτυο στον middle- tier server. Ο middle-tier server διαβιβάζει τα requests στην/στις βάση/βάσεις. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 3 JDBC Driver Υπέρ Δεν χρειάζεται κανένα vendor database library να προϋπάρχει στα clients. Η επικοινωνία μεταξύ client και middleware server είναι ανεξάρτητη από τον τύπο της βάσης. Άρα και ο client μπορεί με έναν driver να επικοινωνεί με πολλές βάσεις ταυτόχρονα. Επίσης υπάρχει η δυνατότητα του ο middleware server να έχει επιπλέον services όπως caching, load balancing, και advanced system administration. Μπορεί να χρησιμοποιηθεί στο internet. Κατά Aπαιτεί database-specific coding στο middleware server. Μπορεί να δημιουργηθεί bottleneck στο middleware server. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 4 JDBC Driver Native-Protocol Είναι όλο γραμμένο σε Java. Μετατρέπει όλες τις κλήσεις JDBC, σε κλήσεις για το vendor-specific database management system (DBMS) protocol, οπότε τα client applications μπορούν να επικοινωνούν κατευθείαν με τον database server. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Type 4 JDBC Driver Υπέρ Δεδομένου ότι type 4 JDBC drivers δεν χρειάζεται να μεταφράζουν τα database requests στο ODBC ή στο native connectivity interface ή να διαβιβάζουν τα request σε ένα άλλο server, η απόδοση-ταχύτητα είναι πολύ υψηλές. Επίσης δεν χρειάζεται να γίνει εγκατάσταση κάποιου άλλου ειδικού λογισμικού στον client ή στον server. Ιδανικοί για χρήση στο διαδίκτυο. Κατά Με τους οδηγούς type 4 ο χρήστης χρειάζεται διαφορετικούς οδηγούς για κάθε διαφορετική βάση. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Βασικές JDBC Classes Driver Ο τρόπος για σύνδεση στην βάση DriverManager Επιλέγει και «φορτώνει» τον Driver Connection Η σύνδεση με την βάση Statement Ένα SQL statement ResultSet Οι εγγραφές που επιστρέφονται από το Statement DriverManager Connection Statement ResultSet 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Driver URLs Κάθε driver έχει το δικό του protocol / driver naming jdbc:protocol:source Παραδείγματα jdbc:odbc:DataSource e.g. jdbc:odbc:Northwind jdbc:msql://host[:port]/database e.g. jdbc:msql://foo.nowhere.com:4333/accounting 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός DriverManager Συνδέεται στο συγκεκριμένο JDBC URL με τα ανάλογα username και password Throws java.sql.SQLException Επιστρέφει Connection object 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Connection Το Connection αντιπροσωπεύει ένα session με μια συγκεκριμένη database. Μέσα από το Connection, εκτελούνται SQL statements και επιστρέφονται αποτελέσματα – εγγραφές. Έχει μεθόδους για να χειρίζεται τα transactions. 27/4/2010 Δικτυακός Προγραμματισμός

Παράδειγμα Connection String url = "jdbc:odbc:Northwind"; try { //Φορτώνει την κλάση του driver δυναμικά κατά την εκτέλεση του προγράμματος Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(url); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Statement Το Statement είναι ένα αντικείμενο που χρησιμοποιείται για την εκτέλεση στατικών SQL statements λήψη των αποτελεσμάτων που προκύπτουν από αυτά. Βασικές Μέθοδοι: public ResultSet executeQuery(String sql) Για Select! public int executeUpdate(String sql) Για Insert, Update, Delete! Επιστρέφει τα rows που επηρεάστηκαν από το statement. 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός ResultSet Το ResultSet παρέχει πρόσβαση σε ένα πίνακα από δεδομένα που έχει προκύψει από την εκτέλεση ενός Statement. Μόνο ένα ResultSet για κάθε Statement μπορεί να είναι ανοιχτό κάθε φορά. Οι γραμμές του πίνακα ανακτώνται κατά σειρά. Το ResultSet διατηρεί έναν δρομέα στην τρέχουσα γραμμή / row του πίνακα. Η μέθοδος 'next' μετακινεί τον δρομέα στην επόμενη θέση. Δεν υπάρχει δυνατότητα επιστροφής 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Παράδειγμα SELECT Connection con = DriverManager.getConnection(url, "alex", "8675309"); Statement st = con.createStatement(); ResultSet results = st.executeQuery("SELECT EmployeeID, LastName, FirstName FROM Employees"); while (results.next()) { int id = results.getInt(1); String last = results.getString(2); String first = results.getString(3); System.out.println("" + id + ": " + first + " " + last); } st.close(); con.close(); 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Παράδειγμα INSERT Statement s = null; try { s = c.createStatement(); } catch (SQLException se) { System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); } int m = 0; m = s.executeUpdate("INSERT INTO books VALUES " + "(41472, 'Practical PostgreSQL', 1212, 4)"); System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); 27/4/2010 Δικτυακός Προγραμματισμός

Παράδειγμα INSERT με χρήση prepared statement PreparedStatement ps = null; try { ps = c.prepareStatement("INSERT INTO authors VALUES (?, ?, ?)"); ps.setInt(1, 495); ps.setString(2, "Light-Williams"); ps.setString(3, "Corwin"); } catch (SQLException se) { System.out.println("We got an exception while preparing a statement:" + "Probably bad SQL."); } ps.executeUpdate(); System.out.println("We got an exception while executing an update:" + "possibly bad SQL, or check the connection."); 27/4/2010 Δικτυακός Προγραμματισμός

Mapping Java Types to SQL Types SQL type Java Type CHAR, VARCHAR, LONGVARCHAR String NUMERIC, DECIMAL java.math.BigDecimal BIT boolean TINYINT byte SMALLINT short INTEGER int BIGINT long REAL float FLOAT, DOUBLE double BINARY, VARBINARY, LONGVARBINARY byte[] DATE java.sql.Date TIME java.sql.Time TIMESTAMP java.sql.Timestamp 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Παράδειγμα Ερώτηση σε ένα πίνακα και εκτύπωση των περιεχομένων του Ο πίνακας λέγεται main και βρίσκεται στο μηχάνημα 147.102.7.170, στην βάση Memphis που «τρέχει» σε MySQL RDBMS (άρα η πόρτα είναι η 3306) 27/4/2010 Δικτυακός Προγραμματισμός

Ο Πίνακας Main του παραδείγματος 27/4/2010 Δικτυακός Προγραμματισμός

Τα πεδία του πίνακα Main 27/4/2010 Δικτυακός Προγραμματισμός

Μέθοδος που υλοποιεί ερώτηση σε database Στην μέθοδο θα χρησιμοποιήσουμε κάποια αντικείμενα από το πακέτο Java.sql που πρέπει να γίνουν import συγκεκριμένα: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Παράδειγμα Public void connectInDB(){ ResultSet rs; try { String url = "jdbc:mysql://147.102.7.170:3306/memphis"; Class.forName("org.gjt.mm.mysql.Driver"); Connection con = DriverManager.getConnection(url, "root", null); Statement stmt = con.createStatement(); rs = stmt.executeQuery("SELECT * FROM main"); while (rs.next()) { String col1 = rs.getString("MAIN_ID"); String col2 = rs.getString("MAIN_CLASS"); System.out.println("ID= " + col1 + " CLASS= " + col2); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { }} 27/4/2010 Δικτυακός Προγραμματισμός

Αποτελέσματα Ερώτησης... ID= 7 CLASS= bin.BuecherWrapper ID= 8 CLASS= bin.BarnesAndNobleWrapper ID= 9 CLASS= bin.DerclubWrapper ID= 10 CLASS= bin.RandomhouseComWrapper ID= 11 CLASS= bin.BolItWrapper ID= 12 CLASS= bin.BolDeWrapper ID= 13 CLASS= bin.RandomhouseDeWrapper 27/4/2010 Δικτυακός Προγραμματισμός

Δικτυακός Προγραμματισμός Ερωτήσεις 27/4/2010 Δικτυακός Προγραμματισμός