Vous êtes sur la page 1sur 11

CS420 - Agns Guerraz ESISAR INPG

TP 1

Utiliser MySQL dans un programme JAVA avec JDBC1


Le but de ce TP est d'tablir une connexion avec le serveur de Base de Donnes Mysql. Dans une premire partie, les outils ncessaires sont mis en place et une premire application simple de connexion la base est effectue. Tout au long de ce TP: n'oubliez pas de commenter votre code en vous aidant des noncs des exercices.

PARTIE 1 : Connection MySQL dans un programme JAVA. Introduction.


La connexion au serveur MySQL va s'effectuer au travers d'un Driver JDBC, le chargement de ce driver sera dynamique, vitant d'ventuel plantage si le programme est install sur une machine qui ne le possde pas. Un fois le driver charg, on va se connecter au serveur.

1 Prrequis
1. 2. 3. 4. 5. Connecteur JDBC(MySQL) Site de MySQL : http://www.mysql.com/ serveur MySQL http://www.mysql.com/ Variable d'environnement JAVA_HOME dclar idem pour la variable CLASSPATH IDE Eclipse http://www.eclipse.org/

2 Action raliser JDBC


Renommer le fichier mysql-connector-java-3.0.9-stable.jar en mysql-jdbc.jar

2.1 Vrification 2.1.1 Variable JAVA_HOME.


Vrifier la prsence de la variable JAVA_HOME qui pointe vers le rpertoire racine de java voici un exemple de dclaration sous:

2.1.1.1 linux (pour info)


$ setenv JAVA_HOME .:/usr/local/j2sdk1.4.2_02 $ echo $JAVA_HOME nous donnent .:/usr/local/j2sdk1.4.2_02

2.1.1.2 windows (pour info)


C:\> set JAVA_HOME=C:\j2sdk1.4.2_02
1

Ce TP correspond au cours conception et architectures des bases de donnes de Jean-Luc Koning ESISAR INPG. 1 04/09/06

CS420 - Agns Guerraz ESISAR INPG C:\> echo %JAVA_HOME% nous donnent, C:\> C:\j2sdk1.4.2_02

TP 1

2.1.2 Variable CLASSPATH.


Faire de mme avec la variable CLASSPATH pour quel pointe sur le rpertoire $JAVA_HOME/jre/lib/ext et y ajouter le chemin complet avec le nom du driver JDBC

2.1.2.1 Eclipse
Aller dans les proprits de votre projet, puis dans java build path, dans l'onglet librairies si mysqljdbc.jar n'apparat pas alors faire Add library vers le JRE qui contient votre mysql-jdbc.jar.

2.1.2.2 Linux (pour info)


$ setenv jdbc.jar CLASSPATH .:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/jre/lib/ext/mysql-

2.1.2.3 windows (pour info)


c:\> set CLASSPATH=.;%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\jre\lib\ext\mysqljdbc.jar le point aprs le = sert indiquer Java de chercher les classes dans le rpertoire courant puis dans les autres rpertoires. La version du Driver JDBC utilis pour MySQL est la 3.0.9 (version stable).

3 Crer la base
Assurez vous que le serveur mysql est lancer, sinon lancez le. Dans MySql, utiliser dabord la commande : 2 04/09/06

CS420 - Agns Guerraz ESISAR INPG


CREATE DATABASE base ;

TP 1

o base est un nom votre choix (qui ne doit pas dj exister). Connectez vous ensuite votre base
use base ;

4 Programme.
Dans Eclipse: crez un nouveau projet TP1 dans lequel on crera un package tpmysql. Cette application va permettre de se connecter la base: elle gre le chargement du driver JDBC ainsi que la connexion au serveur.

4.1 Crez une classe SqlConnection.


par dfaut.

4.2 Ajoutez un constructeur qui fait juste un appel super(). C'est un constructeur 4.3 Crer une mthode public static void main(String[] args) qui va

implmenter toute l'application:


Connexion au driver JDBC, grer Exception avec try catch: Cration d'une nouvelle instance de com.mysql.jdbc.Driver Faire une trace indiquant: "Driver com.mysql.jdbc.Driver charg" Connexion la base de donnes, grer SQLException avec try catch: On tente d'tablir une connexion Faire une trace indiquant: "Base de donnes connecte" Gestion des SQLException: la connexion la base de donnes n'a pas pu tre tablie imprimer les codes erreurs retourns Gestion des Exception: Faire une trace indiquant: "Le driver n'a pas pu tre charg vrifier que la variable CLASSPATH est bien renseigne."

4.4 Compiler et excuter votre application. Que constatez vous?

3 04/09/06

CS420 - Agns Guerraz ESISAR INPG

TP 1

Partie 2 Remplir la base de donnes base

5 Crer les tables


5.1 DEPT
CREATE TABLE dept (nodept NUMERIC(2) NOT NULL CONSTRAINT dept_nodept_pk PRIMARY KEY, nom VARCHAR(25) , noregion NUMERIC(1) NOT NULL ) ; ou CREATE TABLE dept ( nodept numeric(2) NOT NULL, nom VARCHAR(25), noregion NUMERIC(1) NOT NULL, CONSTRAINT dept_nodept_pk PRIMARY KEY (nodept) );

5.2 EMP
CREATE TABLE emp (noemp NUMERIC(7) NOT NULL CONSTRAINT emp_noemp_pk PRIMARY KEY, nom VARCHAR(25) , prenom VARCHAR(25) , embauche DATE, nosupr NUMERIC(7) , titre VARCHAR(25) , nodept NUMERIC(2) NOT NULL , salaire NUMERIC(11, 2) , tx_commission NUMERIC(4, 2) CONSTRAINT emp_tx_commission_ck CHECK (tx_commission BETWEEN 10 AND 20) , CONSTRAINT emp_nodept_fk FOREIGN KEY (nodept) REFERENCES dept(nodept) ) ; ou CREATE TABLE emp (noemp NUMERIC(7) NOT NULL , nom VARCHAR(25) , prenom VARCHAR(25) , embauche DATE, nosupr NUMERIC(7) , titre VARCHAR(25) , nodept NUMERIC(2) NOT NULL , salaire NUMERIC(11, 2) , tx_commission NUMERIC(4, 2), CONSTRAINT emp_nodept_fk FOREIGN KEY (nodept) REFERENCES dept(nodept), CONSTRAINT emp_noemp_pk PRIMARY KEY (noemp), CONSTRAINT emp_tx_commission_ck CHECK (tx_commission BETWEEN 10 AND 20) ) ;

4 04/09/06

CS420 - Agns Guerraz ESISAR INPG

TP 1

5.3 Remplir les tables 5.3.1 DEPT


INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO dept VALUES INTO dept VALUES INTO dept VALUES INTO dept VALUES INTO dept VALUES INTO dept VALUES INTO dept VALUES INTO dept VALUES (35 INTO dept VALUES (41 INTO dept VALUES (42 INTO dept VALUES (43 INTO dept VALUES (44 INTO dept VALUES (45 INTO dept VALUES (50 INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO dept dept dept dept dept dept dept dept dept dept dept dept dept dept (10 , finance (20 , Atelier (30 , Atelier (31 , Vente , (32 , Vente , (33 , Vente , (34 , Vente , , Vente , 5 ) ; , Distribution , , Distribution , , Distribution , , Distribution , , Distribution , , Administration , , , 1 2 3 4 1 2 3 4 5 , ) ) ) ) ) 1 1 2 3 ) ) ) ) ; ; ; ; ; ); ); ); ); ; ; ; ;

(nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion) (nodept,nom,noregion)

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

(10,'finance',1); (20,'Atelier',2); (30,'Atelier',3); (31,'Vente',1); (32,'Vente',2); (33,'Vente',3); (34,'Vente',4); (35,'Vente',5); (41,'Distribution',1); (42,'Distribution',2); (43,'Distribution',3); (44,'Distribution',4); (45,'Distribution',5); (50,'Administration',1);

Vrifier:
mysql> SELECT * FROM dept ; +--------+----------------+----------+ | nodept | nom | noregion | +--------+----------------+----------+ | 10 | finance | 1 | | 20 | Atelier | 2 | | 30 | Atelier | 3 | | 31 | Vente | 1 | | 32 | Vente | 2 | | 33 | Vente | 3 | | 34 | Vente | 4 | | 35 | Vente | 5 | | 41 | Distribution | 1 | | 42 | Distribution | 2 | | 43 | Distribution | 3 | | 44 | Distribution | 4 | | 45 | Distribution | 5 | | 50 | Administration | 1 | +--------+----------------+----------+ 14 rows in set (0.01 sec)

5.3.2 EMP
INSERT INTO emp VALUES (1 , Patamob , Adhmar , 03/26/2000 , NULL , Prsident , 50 , 50000 , NULL) ; INSERT INTO emp VALUES (2 , Zeublouze , Agathe , 04/15/2000 , 1 , Dir. Distrib , 41 , 35000 , NULL) ; INSERT INTO emp VALUES (3 , Kuzbidon , Alex , 05/05/2000 ,

5 04/09/06

CS420 - Agns Guerraz ESISAR INPG


1 , Dir. Vente , 31 , 34000 , NULL) ; INSERT INTO emp VALUES (4 , Locale , Anasthasie , 05/25/2000 , 1 , Dir. finance , 10 , 36000 , NULL) ; INSERT INTO emp VALUES (5 , Teutmaronne , Armand , 06/14/2000 , 1 , Dir. Administr , 50 , 36000 , NULL) ; INSERT INTO emp VALUES (6 , Zoudanlkou , Debbie , 07/04/2000 , 2 , Chef Entrept , 41 , 25000 , NULL) ; INSERT INTO emp VALUES (7 , Rivenbusse , Elsa , 07/24/2000 , 2 , Chef Entrept , 42 , 24000 , NULL) ; INSERT INTO emp VALUES (8 , Ardelpic , Helmut , 08/13/2000 , 2 , Chef Entrept , 43 , 23000 , NULL) ; INSERT INTO emp VALUES (9 , Peursconla , Humphrey , 09/02/2000 , 2 , Chef Entrept , 44 , 22000 , NULL) ; INSERT INTO emp VALUES (10 , Vrante , Hlna , 09/22/2000 , 2 , Chef Entrept , 45 , 21000 , NULL) ; INSERT INTO emp VALUES (11 , Enfaillite , Mlusine , 10/12/2000 , 3 , Reprsentant , 31 , 25000 , 10) ; INSERT INTO emp VALUES (12 , Eurktumeme , Odile , 11/01/2000 , 3 , Reprsentant , 32 , 26000 , 12.5) ; INSERT INTO emp VALUES (13 , Hotdeugou , Olaf , 11/21/2000 , 3 , Reprsentant , 33 , 27000 , 10) ; INSERT INTO emp VALUES (14 , Odlavieille , Pacme , 12/11/2000 , 3 , Reprsentant , 34 , 25500 , 15) ; INSERT INTO emp VALUES (15 , Amartakaldire , Quentin , 12/31/2000 , 3 , Reprsentant , 35 , 23000 , 17.5) ; INSERT INTO emp VALUES (16 , Traibien , Samira , 01/10/2001 , 6 , Secrtaire , 41 , 15000 , NULL) ; INSERT INTO emp VALUES (17 , Fonfec , Sophie , 01/20/2001 , 6 , Secrtaire , 41 , 14000 , NULL) ; INSERT INTO emp VALUES (18 , Fairant , Teddy , 02/09/2001 , 7 , Secrtaire , 42 , 13000 , NULL) ; INSERT INTO emp VALUES (19 , Blaireur , Terry , 02/09/2001 , 7 , Secrtaire , 42 , 13000 , NULL) ; INSERT INTO emp VALUES (20 , Ajerre , Tex , 02/19/2001 , 8 , Secrtaire , 43 , 13000 , NULL) ; INSERT INTO emp VALUES (21 , Chmonfisse , Thierry , 02/19/2001 , 8 , Secrtaire , 43 , 12000 , NULL) ; INSERT INTO emp VALUES (22 , Phototetedemort , Thomas , 03/01/2001 , 9 , Secrtaire , 44 , 22500 , NULL) ; INSERT INTO emp VALUES (23 , Kacout , Xavier , 03/11/2001 , 9 , Secrtaire , 34 , 11500 , NULL) ; INSERT INTO emp VALUES (24 , Adrouille-Toultan , Yves , 03/21/2001 , 10 , Secrtaire , 45 , 11000 , NULL) ; INSERT INTO emp VALUES (25 , Anchier , Yvon , 12/31/2000 , 10 , Secrtaire , 45 , 10000 , NULL) ;

TP 1

Vrifier le format de la date:


mysql> help date Name: 'DATE' Description: DATE A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format, but allows you to assign values to DATE columns using either strings or numbers. (noemp,nom,prenom,embauche,nosupr,titre,nodept,salaire,tx_commission) INSERT INTO emp VALUES (1 , 'Patamob' , 'Adhmar' , '2000/03/26' , NULL , 'Prsident' , 50 , 50000 , NULL) ; INSERT INTO emp VALUES (2 , 'Zeublouze' , 'Agathe' , '2000/04/15' , 1 , 'Dir. Distrib' , 41 , 35000 , NULL) ; INSERT INTO emp VALUES (3 , 'Kuzbidon' , 'Alex' , '2000/05/05' , 1 , 'Dir. Vente' , 31 , 34000 , NULL) ; INSERT INTO emp VALUES (4 , 'Locale' , 'Anasthasie' , '2000/05/25/' , 1 , 'Dir. finance' , 10 , 36000 , NULL) ; INSERT INTO emp VALUES (5 , 'Teutmaronne' , 'Armand' , '2000/06/14' ,

6 04/09/06

CS420 - Agns Guerraz ESISAR INPG


1 , 'Dir. Administr' , 50 , 36000 , NULL) ; INSERT INTO emp VALUES (6 , 'Zoudanlkou' , 'Debbie' , '2000/07/04' , 2 , 'Chef Entrept' , 41 , 25000 , NULL) ; INSERT INTO emp VALUES (7 , 'Rivenbusse' , 'Elsa' , '2000/07/24' , 2 , 'Chef Entrept' , 42 , 24000 , NULL) ; INSERT INTO emp VALUES (8 , 'Ardelpic' , 'Helmut' , '2000/08/13' , 2 , 'Chef Entrept' , 43 , 23000 , NULL) ; INSERT INTO emp VALUES (9 , 'Peursconla' , 'Humphrey' , '2000/09/02' , 2 , 'Chef Entrept' , 44 , 22000 , NULL) ; INSERT INTO emp VALUES (10 , 'Vrante' , 'Hlna' , '2000/09/22' , 2 , 'Chef Entrept' , 45 , 21000 , NULL) ; INSERT INTO emp VALUES (11 , 'Enfaillite' , 'Mlusine' , '2000/10/12' , 3 , 'Reprsentant' , 31 , 25000 , 10) ; INSERT INTO emp VALUES (12 , 'Eurktumeme' , 'Odile' , '2000/11/01' , 3 , 'Reprsentant' , 32 , 26000 , 12.5) ; INSERT INTO emp VALUES (13 , 'Hotdeugou' , 'Olaf' , '2000/11/21' , 3 , 'Reprsentant' , 33 , 27000 , 10) ; INSERT INTO emp VALUES (14 , 'Odlavieille' , 'Pacme' , '2000/12/11' , 3 , 'Reprsentant' , 34 , 25500 , 15) ; INSERT INTO emp VALUES (15 , 'Amartakaldire' , 'Quentin' , '2000/12/31' , 3 , 'Reprsentant' , 35 , 23000 , 17.5) ; INSERT INTO emp VALUES (16 , 'Traibien' , 'Samira' , '2001/01/10' , 6 , 'Secrtaire' , 41 , 15000 , NULL) ; INSERT INTO emp VALUES (17 , 'Fonfec' , 'Sophie' , '2001/01/20' , 6 , 'Secrtaire' , 41 , 14000 , NULL) ; INSERT INTO emp VALUES (18 , 'Fairant' , 'Teddy' , '2001/02/09' , 7 , 'Secrtaire' , 42 , 13000 , NULL) ; INSERT INTO emp VALUES (19 , 'Blaireur' , 'Terry' , '2001/02/09' , 7 , 'Secrtaire' , 42 , 13000 , NULL) ; INSERT INTO emp VALUES (20 , 'Ajerre' , 'Tex' , '2001/02/19' , 8 , 'Secrtaire' , 43 , 13000 , NULL) ; INSERT INTO emp VALUES (21 , 'Chmonfisse' , 'Thierry' , '2001/02/19' , 8 , 'Secrtaire' , 43 , 12000 , NULL) ; INSERT INTO emp VALUES (22 , 'Phototetedemort' , 'Thomas' , '2001/03/01' , 9 , 'Secrtaire' , 44 , 22500 , NULL) ; INSERT INTO emp VALUES (23 , 'Kacout' , 'Xavier' , '2001/03/11' , 9 , 'Secrtaire' , 34 , 11500 , NULL) ; INSERT INTO emp VALUES (24 , 'Adrouille-Toultan' , 'Yves' , '2001/03/21' , 10 , 'Secrtaire' , 45 , 11000 , NULL) ; INSERT INTO emp VALUES (25 , 'Anchier' , 'Yvon' , '2000/12/31' , 10 , 'Secrtaire' , 45 , 10000 , NULL) ;

TP 1

Vrifier:
mysql> SELECT * FROM emp ; +-------+-------------------+------------+------------+--------+----------------+--------+---------+---------------+ | noemp | nom | prenom | embauche | nosupr | titre | nodept | salaire | tx_commission | +-------+-------------------+------------+------------+--------+----------------+--------+----------+---------------+ | 1 | Patamob | Adhmar | 2000-03-26 | NULL | Prsident | 50 | 50000.00 | NULL | | 2 | Zeublouze | Agathe | 2000-04-15 | 1 | Dir. Distrib | 41 | 35000.00 | NULL | | 3 | Kuzbidon | Alex | 2000-05-05 | 1 | Dir. Vente | 31 | 34000.00 | NULL | | 4 | Locale | Anasthasie | 2000-05-25 | 1 | Dir. finance | 10 | 36000.00 | NULL | | 5 | Teutmaronne | Armand | 2000-06-14 | 1 | Dir. Administr | 50 | 36000.00 | NULL | | 6 | Zoudanlkou | Debbie | 2000-07-04 | 2 | Chef Entrept | 41 | 25000.00 | NULL | | 7 | Rivenbusse | Elsa | 2000-07-24 | 2 | Chef Entrept | 42 | 24000.00 | NULL | | 8 | Ardelpic | Helmut | 2000-08-13 | 2 | Chef Entrept | 43 | 23000.00 | NULL | | 9 | Peursconla | Humphrey | 2000-09-02 | 2 | Chef Entrept | 44 | 22000.00 | NULL | | 10 | Vrante | Hlna | 2000-09-22 | 2 | Chef Entrept | 45 | 21000.00 | NULL | | 11 | Enfaillite | Mlusine | 2000-10-12 | 3 | Reprsentant | 31 | 25000.00 | 10.00 | | 12 | Eurktumeme | Odile | 2000-11-01 | 3 | Reprsentant | 32 | 26000.00 | 12.50 | | 13 | Hotdeugou | Olaf | 2000-11-21 | 3 | Reprsentant | 33 | 27000.00 | 10.00 | | 14 | Odlavieille | Pacme | 2000-12-11 | 3 | Reprsentant | 34 | 25500.00 | 15.00 | | 15 | Amartakaldire | Quentin | 2000-12-31 | 3 | Reprsentant | 35 | 23000.00 | 17.50 | | 16 | Traibien | Samira | 2001-01-10 | 6 | Secrtaire | 41 | 15000.00 | NULL | | 17 | Fonfec | Sophie | 2001-01-20 | 6 | Secrtaire | 41 | 14000.00 | NULL | | 18 | Fairant | Teddy | 2001-02-09 | 7 | Secrtaire | 42 | 13000.00 | NULL | | 19 | Blaireur | Terry | 2001-02-09 | 7 | Secrtaire | 42 | 13000.00 | NULL | | 20 | Ajerre | Tex | 2001-02-19 | 8 | Secrtaire | 43 | 13000.00 | NULL | | 21 | Chmonfisse | Thierry | 2001-02-19 | 8 | Secrtaire | 43 | 12000.00 | NULL | | 22 | Phototetedemort | Thomas | 2001-03-01 | 9 | Secrtaire | 44 | 22500.00 | NULL | | 23 | Kacout | Xavier | 2001-03-11 | 9 | Secrtaire | 34 | 11500.00 | NULL | | 24 | Adrouille-Toultan | Yves | 2001-03-21 | 10 | Secrtaire | 45 | 11000.00 | NULL | | 25 | Anchier | Yvon | 2000-12-31 | 10 | Secrtaire | 45 | 10000.00 | NULL | +-------+-------------------+------------+------------+--------+----------------+--------+----------+---------------+ 25 rows in set (0.00 sec)

7 04/09/06

CS420 - Agns Guerraz ESISAR INPG

TP 1

PARTIE 3 : Manipulation des donnes de la base


Dans cette partie nous allons voir comment effectuer des requtes de type SELECT, DELETE, INSERT, crer des tables, les effacer, etc...

6 Classe Entreprise
6.1 Crez une classe Entreprise qui contient un attribut conn de type Connection. 6.2 Ajoutez un constructeur permettant de crer un objet Entreprise qui fait, pour
l'instant, juste un appel super(). C'est un constructeur par dfaut.

6.3 Crez une mthode public static void main(String[] args) qui renvoie
une SQLException et qui est la fonction principale de test de Entreprise. Sa signature est la suivante: public static void main (String args []) throws SQLException.

7 Mthode Connexion et Deconnexion


7.1 Crez une mthode de connexion la base qui renvoie une SQLException, de signature: private void connexion() throws SQLException. Elle contient:
Connexion au driver JDBC, grer Exception avec try catch: Cration d'une nouvelle instance de com.mysql.jdbc.Driver Faire une trace indiquant: "Driver com.mysql.jdbc.Driver charg" conn = Connexion la base de donnes, grer SQLException avec try catch: Gestion des SQLException: la connexion la base de donnes n'a pas pu tre tablie imprimer les codes erreurs retourns

Vous pouvez vous inspirer de la partie 1.

7.2 Ajouter cette mthode dans le constructeur permettant de crer un objet Entreprise :
/**Constructeur*/ public Entreprise() { super(); try{ connexion(); } catch (SQLException e) { System.out.println(e.getMessage()); } }

8 04/09/06

CS420 - Agns Guerraz ESISAR INPG

TP 1

7.3 Crez une mthode deconnexion() de dconnexion la base qui renvoie une SQLException et dont la signature est la suivante: public void deconnexion() throws SQLException. Elle contient:
Deconnexion au driver JDBC, grer Exception avec try catch Faire une trace indiquant: "Connexion ferme." Gestion des SQLException: imprimer les codes erreurs retourns

7.4 Tester les 2 mthodes prcdentes connexion() et deconnexion() dans la


fonction principale en crant un objet entreprise de type Entreprise et en grant les SQLException.

7.5 Compiler et excuter votre application. Que constatez vous?

8 Interrogation de la base de donnes


8.1 Crez une mthode interrogation() interrogeant la base de donnes avec la requte suivante: SELECT nom FROM emp;. Cette mthode renvoie une SQLException et sa signature est la suivante: public void interrogation() throws SQLException. Le nom des employs est affich sur une colonne. Elle contient:
Crer un objet de stmt de type Statement pour envoyer des Statements de SQL la base de donnes. Grer Exception avec try catch Faire la requte Select en utilisant la mthode executeQuery() de l'objet stmt et rcuprer le rsultat dans l'objet rset de type ResultSet. Afficher le rsultat sous forme de colonne Fermer rset Fermer stmt; Gestion des SQLException: imprimer les codes erreurs retourns

8.2 Crez une mthode printDataBaseMetaData() qui imprime les meta donnes de la base. Cette mthode renvoie une SQLException et sa signature est la suivante: public void printDataBaseMetaData() throws SQLException.
Pour obtenir les metadata de la base
DatabaseMetaData dbmd = conn.getMetaData();

Spcification du type d'objet dans notre cas c'est les tables


String[] types = {"TABLE"}; ResultSet resultSet = dbmd.getTables(null, null, "%", types);

Afficher la liste du rsultat avec le nom de la table et son catalogue et schma s'ils existent. Gestion des SQLException: imprimer les codes erreurs retourns.

9 04/09/06

CS420 - Agns Guerraz ESISAR INPG

TP 1

8.3 Tester les 2 mthodes prcdentes interrogation() printDataBaseMetaData() dans la fonction principale. 8.4 Compiler et excuter votre application. Que constatez vous?

et

9 Manipulation des donnes


9.1 Crez une mthode createTableAffaire() qui cre la table affaire avec la
requte create table affaire (NOAFF numeric(3), NOM varchar(10), BUDGET numeric(8,2));. Cette mthode renvoie une SQLException et sa signature est la suivante: public boolean createTableAffaire() throws SQLException. De plus elle retourne true si la table affaire est cre et false sinon.
Crer un objet de stmt de type Statement pour envoyer des Statements de SQL la base de donnes. Grer Exception avec try catch Faire la requte Create en utilisant la mthode l'objet stmt et rcuprer le rsultat dans l'objet boolean. Fermer stmt; Gestion des SQLException: imprimer les codes erreurs retourns retourner la valeur boolenne de rset execute() de rset de type

9.2 Crez une mthode dropTable() qui efface la table dont le nom est pass en
paramtre avec la requte DROP TABLE table_name;. Cette mthode renvoie une SQLException et sa signature est la suivante: public int dropTable(String table_name) throws SQLException. Cette mthode retourne un entier qui est le nombre de lignes modifies.
Crer un objet de stmt de type Statement pour envoyer des Statements de SQL la base de donnes. Grer Exception avec try catch Faire la requte Drop en utilisant la mthode createStatement() de l'objet stmt et rcuprer le rsultat dans l'objet rset de type int. Fermer stmt; Gestion des SQLException: imprimer les codes erreurs retourns retourner la valeur entire de rset

qui permet d'inserer des lments dans la table affaire dont les attributs sont passs en paramtre: attribut NOAFF, attribut NOM, attribut BUDGET; avec la requte INSERT INTO affaire VALUES (NOAFF,NOM,BUDGET);. Cette mthode renvoie une SQLException et sa signature est la suivante: public void insertionDansAffaire(int no_aff, String nom, int budget) throws SQLException.
Crer un objet de pstmt de type PreparedStatement pour envoyer des PreparedStatements SQL la base de donnes. Grer Exception avec try catch

9.3 Crez une mthode insertionDansAffaire()

10 04/09/06

CS420 - Agns Guerraz ESISAR INPG Ex: PreparedStatement pstmt = conn.prepareStatement("INSERT INTO affaire VALUES (?,?,?)"); pstmt.setInt (1, no_aff); pstmt.setString (2, nom); pstmt.setInt (3, budget); Executer le pstmt Fermer pstmt; Gestion des SQLException: imprimer les codes erreurs retourns

TP 1

9.4 Tester les 3 mthodes prcdentes createTableAffaire(), dropTable() et


insertionDansAffaire() dans la fonction principale. Attention, avant de crer une Table il faut tre sur qu'elle n'existe pas dj: il est recommand de la dtruire. 9.5 Compiler et excuter votre application. Que constatez vous?

9.6 Insrer des donnes dans la table affaire


101, ALPHA ,250000 ; 102, BETA , 175000 ; 103, GAMMA ,95000.

9.7 Compiler et excuter votre application. Vrifiez que les donnes ont bien t
insres dans la table affaire.

10 Documentation
Gnrer la documentation de tout le projet TP1.

11 A rendre
votre rapport de TP ne doit pas dpasser 4 pages, il contiendra :

vos noms prnoms et nlve, les extraits de code java que vous avez crits en rponses aux questions avec une prsentation agrable, La rponse aux questions poses, toutes les copies d'cran, extrait de votre javadoc et tous les commentaires qui vous semblent pertinents et informatifs afin de rendre la lecture de votre rapport agrable et aise, les rfrences bibliographiques utilises, les difficults rencontres ...

11 04/09/06