developpement web - jdbc´richer/ens/m2cdsii/crs_jdbc.pdfdeveloppement web - jdbc´ outils hsqldb -...

32
eveloppement Web - JDBC eveloppement Web - JDBC Jean-Michel Richer [email protected] http://www.info.univ-angers.fr/pub/richer M1/M2 Informatique 2010-2011 1 / 32

Upload: others

Post on 13-Mar-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Developpement Web - JDBC

Jean-Michel [email protected]

http://www.info.univ-angers.fr/pub/richer

M1/M2 Informatique 2010-2011

1 / 32

Page 2: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Plan

Plan

1 Preambule

2 Utilisation de JDBC

3 Outils

2 / 32

Page 3: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Preambule

Preambule

Preambule

3 / 32

Page 4: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Preambule

Utilisation de JDBC

Objectifs

• decouvrir et apprendre a utiliser JDBC (Java DataBaseConnectivity)

• utilisation avec MySQL

• utilisation avec HSQLDB

4 / 32

Page 5: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Preambule

A quoi sert JDBC ?

Definition (JDBC)

• Java DataBase Connectivity introduit par SUN en 1996

• permet de dialoguer avec un DBMS (DataBaseManagement System)

• au travers d’une API (Application Programming Inteface)

• grace au langage SQL (Structured Query Language)

5 / 32

Page 6: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Preambule

Drivers

Definition (JDBC Drivers)

Les Drivers (pilotes) permettent l’echange d’information entreJava et le DBMS. Il existe 4 categories de Drivers :

• Type 1 : JDBC-ODBC bridge drivers

• Type 2 : Native-API partly Java drivers

• Type 3 : Net-protocol All-Java drivers

• Type 4 : Native-protocol All-Java drivers

6 / 32

Page 7: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Preambule

Drivers

Types de pilotes

• Type 1 : traduit JDBC en ODBC et utilise le pilote ODBCpour communiquer avec le DBMS

• Type 2 : pilote ecrit en Java et dans un langage natif(C/C++) qui communique avec l’API du DBMS

• Type 3 : pilote en Java qui communique au travers d’unserveur qui communique avec le DBMS

• Type 4 : pilote en Java qui communique avec le DBMS

Rappel : ODBC (Open Database Connectivity)

7 / 32

Page 8: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Utilisation de JDBC

Utilisation de JDBC

8 / 32

Page 9: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Fonctionnement

Fonctionnement

1 etablir une connexion avec la base de donnees(DriverManager )

2 construire et executer une requete (Statement ouPreparedStatement)

3 traiter le resultat (ResultSet)

9 / 32

Page 10: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Connexion a la base de donnees

URL et Connexion• on realise la connexion au travers d’une URLjdbc:nom du protocole:URL BD

• des exceptions sont levees en cas de probleme :SQLException, ClassNotFound

10 / 32

Page 11: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Exemple de connexion

Connexion pour MySQL1 try {2 String dbURL = "jdbc:mysql://localhost/dbpersons";3 // Avant JDBC 4.04 Class.forName("com.mysql.jdbc.driver");56 Connection connection = DriverManager.getConnection(7 dbUrl, "login", "password");89 } catch(Execption e) {

10 e.printStackTrace();11 }

11 / 32

Page 12: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Autres pilotes

Autres pilotes

• JDBC-ODBC : sun.jdbc.odbc.JdbcOdbcDriver

• MySQL : com.mysql.jdbc.Driver

• DB2 : com.ibm.db2.jcc.DB2Driver

• HSQLDB : org.hsqldb.jdbc.JDBCDriver

12 / 32

Page 13: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.Statement

java.sql.Statement

• modelise une requete SQL

• executeQuery(String query) : execute la requete etretourne un ResultSet (SELECT)

• executeUpdate(String query) renvoie le nombre de lignesmodifiees (INSERT, DELETE, UPDATE)

• execute(String query) a utiliser dans les deux cas

13 / 32

Page 14: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.PreparedStatement

Fonctionnement d’un Statement• consiste a mettre en place un plan d’acces aux tables

• couteux !

• la classe PreparedStatement optimise les traitements enpermettant d’etablir une seule fois le plan d’acces

• pour l’execution de plusieurs requetes

14 / 32

Page 15: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.PreparedStatement

Sans PreparedStatement1 Statement st= connection.createStatement();23 for (Person p : list) {4 // same request but generates access plan5 st.executeUpdate("UPDATE persons "+6 "SET pe name=’"+p.getName()+"’ "+7 "WHERE pe id="+p.getId();8 }9 st.close();

10

15 / 32

Page 16: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.PreparedStatement

Utilisation• on utilise ? pour representer un champ

• les methodes setXXX(int, Object) pour le renseigner

Avec PreparedStatement1 PreparedStatement st = connection.prepareStatement(2 "UPDATE persons SET pe name=? WHERE pe id=?"3 );45 for (Person p : list) {6 st.setString(1, p.getName());7 st.setInt(2, p.getId());8 st.execute();9 }

10 st.close();

16 / 32

Page 17: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.ResultSet

java.sql.ResultSet

• permet le traitement des resultats

• represente un ensemble de resultats (lignes) extraites dela BD

• on itere au travers du container grace a next()• on recupere les colonnes graces aux methodes :

• getXXX(int columnIndex)• getXXX(String columnName)• avec XXX = Int, String, Float, Long, Date, Timestamp

17 / 32

Page 18: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

java.sql.ResultSet

Utilisation de ResultSet1 Statement st = connection.createStatement();2 ResultSet rs = st.executeQuery("SELECT * FROM persons");3 while (rs.next()) {4 Persons p = new Persons();5 p.setId( rs.getInt("pe id") );6 // or p.setId( rs.getInt(1) );7 p.setId( rs.getName("pe name") );8 // or p.setId( rs.getName(2) );9 list.add(p);

10 }

18 / 32

Page 19: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Utilisation de JDBC

Les Transactions

JDBC et transactions• JDBC permet de gerer les transactions

• desactiver la validation automatique :connection.setAutoCommit(false)

• effectuer des requetes

• valider : connection.commit()

• ou invalider : connection.rollback()

19 / 32

Page 20: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

Outils

Outils

20 / 32

Page 21: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

MySQL

MySQL

Pour communiquer avec le serveur MySQL :

• telecharger depuis www.mysql.com : JDBC Driver forMySQL (Connector/J)

• installer le .jar dans WEB-INF/lib (mysql-connector)

• pilote : com.mysql.jdbc.driver

• url : jdbc:mysql://localhost/db

21 / 32

Page 22: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

DBMS en memoire

DBMS en memoire• a utiliser pour le debugging

• parfois pas reellement compatible SQL

• plus ou moins facile a installer et utiliser (ex : HSQLDB)

exemples :

• HSQLDB

• Derby (Apache DB)

22 / 32

Page 23: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB

Hyper SQL DB

Caracteristiques de HSQLDB :

• DBMS ecrit en Java

• reside en memoire

• lors de l’arret du serveur on ecrit les donnees dans unfichier

23 / 32

Page 24: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB

HSQLDB

Pour communiquer avec le serveur HSQLDB :

• telecharger sur www.hsqldb.org

• installer hsqldb.jar dans WEB-INF/lib

• pilote : org.hsqldb.jdbc.JDBCDriver

• url : jdbc:hsqldb:hsql://localhost/db

24 / 32

Page 25: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB

Creation du script

Creer le script suivant et sauver dans a.script :

CREATE MEMORY TABLE PUBLIC.PERSONS(PE_ID INTEGER GENERATED BY DEFAULT ASIDENTITY(START WITH 1) NOT NULL PRIMARY KEY,PE_FIRST_NAME VARCHAR(20),PE_LAST_NAME VARCHAR(20)

)

25 / 32

Page 26: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB

creation de la base de donnees

Dans le repertoire du projet

• creer un sous-repertoire hsqldb

• cd hsqldb

• lancer

java -cp hsqldb.jarorg.hsqldb.util.DatabaseManagerSwing

• puis utiliser pour la connexion :jdbc:hsqldb:file:dbpersons

26 / 32

Page 27: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB

creation de la base de donnees• choisir File, Open Script

• telecharger a.script

• puis cliquer sur Execute SQL

• quitter le programme

27 / 32

Page 28: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB - Lancer le serveur

HSQLDBjava -cp hsqldb.jar org.hsqldb.server.Server--database.0 file:hsqldb/dbpersons--dbname.0 dbpersons

• nom de la base : --dbname

• fichier de configuration : data/dbpersons

28 / 32

Page 29: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB - Lancer le serveur

Fichier de configuration : data/dbpersons.script1 CREATE USER SA PASSWORD ’’2 CREATE USER PERSUSER PASSWORD ’PERSPASS’3 CREATE SCHEMA PUBLIC AUTHORIZATION DBA4 SET SCHEMA PUBLIC5 CREATE MEMORY TABLE PUBLIC.PERSONS(PE ID INTEGER GENERATED BY DEFAULT AS

IDENTITY(START WITH 1)6 NOT NULL PRIMARY KEY,PE FIRST NAME VARCHAR(20),PE LAST NAME VARCHAR(20))7 GRANT DBA TO SA8 GRANT SELECT ON TABLE PUBLIC.PERSONS TO PERSUSER

9

29 / 32

Page 30: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB - Lancer le client

HSQLDBjava -cp hsqldb.jar

org.hsqldb.util.DatabaseManagerSwing

se connecter avec :

• jdbc:hsqldb:hsql://localhost/dbpersons

• login : SA

• mot de passe : vide

utiliser les memes parametres pour la connection JDBC

30 / 32

Page 31: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

HSQLDB - Fermer le serveur

HSQLDB• lancer

java -cp hsqldb.jarorg.hsqldb.util.DatabaseManagerSwing

• se connecter avecjdbc:hsqldb:hsql://localhost/dbpersons

• login : SA

• mot de passe : vide

• executer la requete SQL : SHUTDOWN

31 / 32

Page 32: Developpement Web - JDBC´richer/ens/m2cdsii/crs_jdbc.pdfDeveloppement Web - JDBC´ Outils HSQLDB - Lancer le serveur Fichier de configuration : data/dbpersons.script 1 CREATE USER

Developpement Web - JDBC

Outils

Fin

Fin

32 / 32