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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

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

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Εργαστήριο Βάσεων Δεδομένων. Triggers

. Εργαστήριο Βάσεων Δεδομένων. Triggers

10 η Διάλεξη Python Βάσεις δεδομένων στη python

MySQL stored procedures

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

. Εργαστήριο Βάσεων Δεδομένων. Stored Procedures

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Σχεδιασμός Βάσεων Δεδομένων

databases linux - terminal (linux / windows terminal)

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

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Σχεδιασμός Βάσεων Δεδομένων

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

Ανοικτά Ακαδημαϊκά Μαθήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

, Evaluation of a library against injection attacks

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Διάλεξη 17: Προγραμματισμός Βάσης Δεδομένων Ι. Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ 342 Βάσεις εδοµένων

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Προγραμματισμός Παγκόσμιου Ιστού

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

5 η Διάλεξη Python - Αρχεία

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2


Βάσεις δεδομένων. (10 ο μάθημα) Ηρακλής Βαρλάμης

Εργαστήριο Βάσεων Δεδομένων

Περιγραφή της εργασίας

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Κεφάλαιο 12 Υλοποίηση Stored Procedures, Χρήση Ευρετηρίων

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Εργαστήριο #10 (Ε10) 1

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Εργαστήριο Βάσεων Δεδομένων

Διαχείριση χρηστών και δικαιωμάτων

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ηλεκτρονικοί Υπολογιστές II

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Τμήμα Πληροφορικής ΑΠΘ

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Ηλεκτρονικοί Υπολογιστές II

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

HOWTO instal Joomla by A. Andreatos

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Paybybank RESTful API GUIDE

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εργαστήριο Βάσεων Δεδομένων

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Εργαστήριο Βάσεων Δεδομένων

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Διαχείριση Πολιτισμικών Δεδομένων

SQL Data Manipulation Language

Κεφάλαιο 14 Διασύνδεση με Εφαρμογές JAVA

7. Ανάπτυξη Εφαρµογών Βάσεων Δεδοµένων

Lecture 19: Internal DB Programming II

PayByBank RESTful API GUIDE

Lecture 3: Introduction III

Τμήμα Διοίκησης Επιχειρήσεων

Η SQL ως γλώσσα τροποποίησης Δεδομένων

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Εργαστήριο Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Περιγραφή του EcoTruck

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

PL/SQL. Κώστας Στεφανίδης

Ανοικτά Ακαδημαϊκά Μαθήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Transcript:

MySQL + Γλώσσα Προγραμματισμού Ευαγγελία Πιτουρά 1

Database drivers Για να χρησιμοποιήσουμε μια βάση δεδομένων από μια γλώσσα προγραμματισμού χρειαζόμαστε έναν driver. JDBC είναι το API για τη Java και καθορίζει πως ένας πελάτης μπορεί να συνδεθεί με μια βάση δεδομένων, υποστηρίζει (1) σύνδεση με τη βδ, (2) εκτέλεση ερωτήσεων και τροποποιήσεων και (3) συλλογή των αποτελεσμάτων Τεχνικά: είναι ένα σύνολο από κλάσεις στο java.sql package Υπάρχει ένα JDBC για κάθε διαφορετικό ΣΔΒΔ Για τη MySQL: Connector/J Για MySQL και C++: Connector/C++ Ευαγγελία Πιτουρά 2

Βήμα 0: Εγκατάσταση του driver (Connector/J) Κατεβάστε Connector/J using binary distribution από: http://dev.mysql.com/downloads/connector/j/5.0.html Εγκατάσταση: unzip (or untar) και θέστε το mysql-connectorjava-[version]-bin.jar στο class path Αν χρησιμοποιείτε Netbeans IDE, υπάρχει ήδη Οδηγίες: «Inside the Projects tab, right click on the Libraries node and select Add Library option. From the list of options, select MySQL JDBC Driver.» Ευαγγελία Πιτουρά 3

Παράδειγμα Δημιουργούμε μια βάση δεδομένων mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec) Φτιάχνουμε ένα νέο χρήστη και του δίνουμε δικαιώματα σε όλους τους πίνακες της testdb mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623 ; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) Ευαγγελία Πιτουρά 4

Παράδειγμα Ευαγγελία Πιτουρά 5

Σύνδεση με τη βάση δεδομένων package name.mysql.first; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; Ευαγγελία Πιτουρά 6

Σύνδεση με τη βάση δεδομένων Connection con = null; String url = "jdbc:mysql://localhost:3306/testdb"; String user = "testuser"; String password = "test623"; con = DriverManager.getConnection(url, user, password); url = "jdbc:mysql://localhost:3306/testdb Host Port όνομα βδ Ευαγγελία Πιτουρά 7

Εκτέλεση SQL εντολών στη βδ Η μέθοδος createstatement() του connection object δημιουργεί ένα Statement object για να στέλνουμε SQL εντολές στη βάση δεδομένων Statement st = null; st = con.createstatement(); Για να εκτελέσουμε SQL εντολές 1. Ερωτήσεις (select queries) rs = st.executequery(query); 2. Τροποποιήσεις (insert, update deletes) st.executeupdate(query); Ευαγγελία Πιτουρά 8

Τροποποίηση Η εκτέλεση της εντολής δεν επιστρέφει αποτελέσματα Statement st = null; st = con.createstatement(); String query = "INSERT INTO Authors(Id, Name) VALUES(6, Steven King'); st.executeupdate(query); Ευαγγελία Πιτουρά 9

Ερώτηση Η εκτέλεση της εντολής επιστρέφει αποτελέσματα. Τα αποτελέσματα εισάγονται σε ένα ResultSet object ένας πίνακας Statement st = null; ResultSet rs = null; st = con.createstatement(); String query = "SELECT * FROM Authors"; rs = pst.executequery(query); pst.close(); Ευαγγελία Πιτουρά 10

Ερώτηση: Cursor Τα δεδομένα από το ResultSet διαβάζονται μια πλειάδα (γραμμή, εγγραφή) τη φορά H μέθοδος next() προχωρά το δείκτη (cursor) στην επόμενη εγγραφή Επιστρέφει null όταν δεν υπάρχουν άλλες πλειάδες Statement st = null; ResultSet rs = null; st = con.createstatement(); String query = "SELECT * FROM Authors"; rs = pst.executequery(query); pst.close(); while (rs.next()) { System.out.print(rs.getInt(1)); System.out.print(": "); System.out.println(rs.getString(2)); } Ευαγγελία Πιτουρά 11

Prepared Statements Αντί να γράφουμε μέσα στην SQL έκφραση τις πραγματικές τιμές χρησιμοποιούμε placeholder (?) Προσδιορίζουμε τις τιμές αργότερα PreparedStatement pst = null; ResultSet rs = null; String author = "Trygve Gulbranssen"; pst = con.preparestatement("insert INTO Authors(Name) VALUES(?)") Προσδιορισμός τιμής pst.setstring(1, author); pst.executeupdate(); pst.close(); Ευαγγελία Πιτουρά 12

Stored Procedures Τι είναι; Μια διαδικασία (procedure) γραμμένη σε SQL (και άλλες απλές εντολές) που αποθηκεύεται στη βάση δεδομένων και μπορείτε να την καλέσετε είτε από τη βάση δεδομένων είτε από ένα πρόγραμμα σε κάποια γλώσσα προγραμματισμού Πρώτα πρέπει να τη δημιουργήσετε μέσω μιας CREATE PROCURE και μετά να την καλέσετε Ευαγγελία Πιτουρά 13

Stored Procedures Ένα απλό παράδειγμα δημιουργίας μιας διαδικασίας χωρίς παραμέτρους DELIMITER // CREATE PROCEDURE bookcount() BEGIN SELECT Count() AS booknumber FROM Books; END // DELIMITER ; Μπορείτε να την καλέσετε απευθείας από τη βάση δεδομένων: CALL bookcount(); Για να τη διαγράψετε: DROP bookcount(); Ευαγγελία Πιτουρά 14

Stored Procedures Η stored procedures μπορεί να έχουν IN, OUT και INOUT παραμέτρους DELIMITER // CREATE PROCEDURE authorbookcount( IN inauthor VARCHAR(25), OUT booknumber INT ) BEGIN SELECT Count(Title) FROM Authors, Book WHERE AuthorsId = Id AND Name = inauthor INTO booknumber; END // DELIMITER ; Στο παραπάνω παράδειγμα inauthor είναι μια IN παράμετρος της οποίας πρέπει να προσδιορίσουμε την τιμή κατά την κλήση της διαδικασίας booknumber είναι μια OUT παράμετρος στην οποία ανατίθεται τιμή μέσω της INTO Ευαγγελία Πιτουρά 15

Stored Procedures Μπορείτε να καλέσετε τη διαδικασία από τη βάση δεδομένων, προσδιορίζοντας μια τιμή για κάθε IN παράμετρο και μια μεταβλητή για κάθε OUT παράμετρο: CALL authorbookcount(`jack London, @jlcount); Η παραπάνω κλήση υπολογίζει τον αριθμό βιβλίων του συγγραφέα Jack London και επιστρέφει την τιμή στη μεταβλητή jlcount Για να δούμε την τιμή της μεταβλητής SELECT @jlcount; Δείτε και http://www.brainbell.com/tutorials/mysql/using_stored_procedures.htm Ευαγγελία Πιτουρά 16

Stored Procedures Μπορείτε να καλέσετε μια stored procedure από τη Java Πρέπει να προσθέσετε το: import java.sql.callablestatement; Όπως και στις προηγούμενες περιπτώσεις CallableStatement stmt = null; String sql = "{call authorbookcount(?,?)}"; stmt = conn.preparecall(sql); Προσδιορισμός τιμής IN stmt.setstring(1, Jack London"); Ευαγγελία Πιτουρά 17

Stored Procedures Προσδιορισμός τιμής OUT Πρέπει πρώτα να καταχωρηθεί μέσω του JDBC CallableStatement.registerOutParameter(index,sqlType) Παράδειγμα: stmt.registeroutparameter(2, java.sql.types.int); Αφού καλέσετε τη διαδικασία μέσω του: stmt.execute; Μπορείτε να δείτε την τιμή μέσω του CallableStatement.getDataType(index) Παράδειγμα: INT AuthorCount = stmt.getint(2); Ευαγγελία Πιτουρά 18

Περισσότερες πηγές Στο παρακάτω link μπορείτε να δείτε ένα ολοκληρωμένο πρόγραμμα Java http://www.cs.uoi.gr/~pvassil/courses/db_iii/exercises/javaexamples/simple/example1.java Επίσης: http://zetcode.com/db/mysqljava/ http://www.mkyong.com/tutorials/jdbc-tutorials/ Οnline documentation: http://dev.mysql.com/doc/connector-j/en/ Ευαγγελία Πιτουρά 19

Ερωτήσεις; Ευαγγελία Πιτουρά 20