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

Post on 13-Mar-2021

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Developpement Web - JDBC

Developpement Web - JDBC

Jean-Michel Richerjean-michel.richer@univ-angers.fr

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

M1/M2 Informatique 2010-2011

1 / 32

Developpement Web - JDBC

Plan

Plan

1 Preambule

2 Utilisation de JDBC

3 Outils

2 / 32

Developpement Web - JDBC

Preambule

Preambule

Preambule

3 / 32

Developpement Web - JDBC

Preambule

Utilisation de JDBC

Objectifs

• decouvrir et apprendre a utiliser JDBC (Java DataBaseConnectivity)

• utilisation avec MySQL

• utilisation avec HSQLDB

4 / 32

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

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

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

Developpement Web - JDBC

Utilisation de JDBC

Utilisation de JDBC

Utilisation de JDBC

8 / 32

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

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

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

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

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

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

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

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

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

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

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

Developpement Web - JDBC

Outils

Outils

Outils

20 / 32

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

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

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

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

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

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

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

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

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

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

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

Developpement Web - JDBC

Outils

Fin

Fin

32 / 32

top related