Vous êtes sur la page 1sur 17

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Programmation oriente objet en langage JAVA


Connexion une base de donnes avec JDBC

Claude Duvallet
Universit du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

Claude.Duvallet@gmail.com http://litis.univ-lehavre.fr/duvallet/

Claude Duvallet 1/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Connexion une base de donnes avec JDBC

Introduction

Manipulation du JDBC

Le JDBC travers un exemple concrt

Les diffrents objets et mthodes manipules

Claude Duvallet 2/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Introduction JDBC

Dans de nombreuses applications, il est ncessaire de se connecter une base de donnes. Nous utiliserons dans notre cas de gure la base de donnes MySQL. En JAVA, pour se connecter une base de donnes et effectuer des manipulations sur cette base, il existe lAPI JDBC. Lapi JDBC est disponible dans le package java.sql qui est nativement prsent au sein de lapi JAVA.

Claude Duvallet 3/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Les principales classes

La classe DriverManager charge et congure le driver de la base de donnes. La classe Connection ralise la connexion et lauthentication la base de donnes. La classe Statement (et PreparedStatement) contient la requte SQL et la transmet la base de donnes. La classe ResultSet permet de parcourir les informations retournes par la base de donnes dans le cas dune slection de donnes. Il contient les donnes de la ligne courante et un pointeur sur la ligne suivante.

Claude Duvallet 4/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Manipulation du JDBC
La manipulation du JDBC sera vu au travers dun exemple prsentant les principales tapes respecter. Au pralable, nous avons cre une base de donnes MySQL appel MTP-DB et au sein de cette base, une table Personne. Nous allons passer en revue :
la connexion une base de donnes avec le chargement du drivers, linsertion dune nouvelle ligne dans la table Personne, la slection dlments dans la table Personne, la suppression dun lment dans la table.

Lexemple complet vous permettra de tester effectivement la manipulation dune base de donnes avec lapi JDBC.

Claude Duvallet 5/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Description gnrale de lexemple


La classe est nomme TestConnexionMySQL. Il faut importer le package java.sql.*. Elle possde deux attributs de type Connection et Statement. Le constructeur a pour objectif de charger le driver de la base de donnes puis douvrir la connexion qui sera utilise pour tout le reste des manipulations. Pour excuter des requtes de slection, il faut utiliser la mthode executeQuery() de linterface java.util.Statement. Pour excuter des requtes de mise jour (modication/suppression), il faut utiliser la mthode executeUpdate() de linterface java.util.Statement.

Claude Duvallet 6/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Chargement du driver et connexion


Au pralable, il faut avoir rcuprer le driver JDBC pour MySQL. Il se prsente sous la forme dun chier jar.
public TestConnexionMySQL (){ // Chargement du pilote try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception e) { e.printStackTrace(); System.exit(99); } // Connexion la base de donnes MySQL "MTP-DB" avec // le login "duvallet" et le mot de passe "duvallet" try { String DBurl = "jdbc:mysql://localhost:3306/MTP-DB"; con = DriverManager.getConnection(DBurl,"duvallet","duvallet"); stmt = con.createStatement(); } catch (SQLException e) { e.printStackTrace(); } }

Claude Duvallet 7/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Insertion dune ligne au sein de la table Personne


Utilisation de la mthode executeUpdate(). Cration dune requte SQL dinsertion. Le numro qui reprsente la clef primaire est gnr automatiquement puis rcupr.
public int insertPersonne (String nom, String prenom, int age){ ResultSet resultats = null; int idGenere = -1; try { stmt.executeUpdate("INSERT INTO Personne (nom, prenom, age) values ("+nom+", "+prenom+","+age+")", Statement.RETURN_GENERATED_KEYS); resultats = stmt.getGeneratedKeys(); if (resultats.next()) { idGenere = resultats.getInt(1); } resultats.close(); } catch (SQLException e) { e.printStackTrace(); } return idGenere; }
Claude Duvallet 8/17 Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Afcher une personne partir de sa clef primaire (numro)


1

On effectue une requte permettant de rcuprer la ligne de la table Personne dont le numro est donn en paramtre de la mthode. On afche la ligne obtenue si il existe une ligne correspondant au numro.

public void affichePersonne (int key){ ResultSet resultats = null; try { boolean encore = false; resultats = stmt.executeQuery("Select Nom, Prenom, Age From Personne Where Numero="+key); if (resultats != null) encore = resultats.next(); if (encore) System.out.println (resultats.getString(1) + " " + resultats.getString(2) + " (" + resultats.getInt(3) + " ans)"); else System.out.println ("Il ny a personne avec ce numero !"); resultats.close(); } catch (SQLException e) { e.printStackTrace(); } }
Claude Duvallet 9/17 Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Afcher toutes les lignes de la table


1

On effectue une requte permettant de rcuprer la liste de tous les enregistrements prsents dans la table Personne. On parcourt lensemble des rsultats obtenus (les lignes de la table) puis on les afche.

public void afficheToutesLesPersonnes (){ ResultSet resultats = null; try { resultats = stmt.executeQuery("Select nom, prenom, age, numero from Personne"); boolean encore = resultats.next(); while (encore) { System.out.println (resultats.getInt(4) + " : " + resultats.getString(1) + " " + resultats.getString(2) + " (" + resultats.getInt(3) + " ans)"); encore = resultats.next(); } resultats.close(); } catch (SQLException e) { e.printStackTrace(); } }
Claude Duvallet 10/17 Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Supprimer des personnes


Utilisation de la mthode executeUpdate(). Cration dune requte SQL de suppression.
public void supprimeToutesLesPersonnes (){ try { stmt.executeUpdate("Delete From Personne"); } catch (SQLException e) { e.printStackTrace(); } } public void supprimePersonne (String nom){ try { stmt.executeUpdate("Delete From Personne Where nom="+nom+""); } catch (SQLException e) { e.printStackTrace(); } }

Claude Duvallet 11/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Crer une table

Cration dune table avec un seul champs de type VarChar(25).


public void creerTable (String nomTable, String champs){ ResultSet resultats = null; try { stmt.executeUpdate("CREATE TABLE "+nomTable +" ("+champs+" VARCHAR(25))"); } catch (SQLException e) { e.printStackTrace(); } }

Claude Duvallet 12/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Tester le fonctionnement de lexemple

Nous commenons par vider la table ce qui vitera que, sur plusieurs tests successifs, il ny ait trop dentres dans la table. Insertion de trois personnes. Afchage de la premire personne insre. Afchage de toutes les personnes. Suppression de Duvallet puis afchage de toutes les personnes. Cration dune table "Etudiant" avec un champs "Identiant" : on ne peut le faire quune seule fois.

Claude Duvallet 13/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Le code complet de la mthode principale


public static void main(java.lang.String[] args) { TestConnexionMySQL test = new TestConnexionMySQL (); test.supprimeToutesLesPersonnes (); System.out.println ("Insertion de trois personnes"); int id1 = test.insertPersonne ("Duvallet", "Claude", 36); int id2 = test.insertPersonne ("Amanton", "Laurent", 40); int id3 = test.insertPersonne ("Sadeg", "Bruno", 48);

System.out.println ("Affichage de la personne de clef primaire = "+id1); test.affichePersonne (id1); System.out.println ("Affichage de toutes les personnes"); test.afficheToutesLesPersonnes (); System.out.println ("Suppression de Duvallet et affichage de toutes les personnes"); test.supprimePersonne ("Duvallet"); test.afficheToutesLesPersonnes (); // Cration de la table Etudiant test.creerTable("Etudiant", "Identifiant"); }
Claude Duvallet 14/17 Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Les mthodes de la classe Statement

La mthode executeQuery() :
Elle permet dexcuter des requtes de type "Select" crites en langage SQL. Lobjet retourn est de type ResultSet et il nest jamais null mais ventuellement vide.

La mthode executeUpdate() :
Elle permet dexcuter des requtes de mise--jour crites en langage SQL. Les requtes SQL sont alors de type INSERT, UPDATE ou DELETE.

Claude Duvallet 15/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Les mthodes de la classe ResultSet (1/2)

La mthode next() permet daccder la ligne suivante. Au dpart, le point est plac avant la premire ligne. Les mthodes getType() :
Elles permettent de lire le rsultat dune colonne suivant son type. Cest ainsi que lon a des mthodes getInt(), getString(), getDouble(), getDate(),.... Deux paramtres sont possibles pour ces mthodes : (1) un entier reprsentant lindex de la colonne, (2) une chaine reprsentant le nom de la colonne.

Claude Duvallet 16/17

Programmation en JAVA

Introduction Manipulation du JDBC Le JDBC travers un exemple concrt Les diffrents objets et mthodes manipules

Les mthodes de la classe ResultSet (2/2)

La mise jour des donnes :


Durant le parcours dun objet de type ResultSet, il est possible deffectuer des mises jour sur la ligne courante du curseur. Pour cela, il faut dclarer lobjet ResultSet comme acceptant les mises jour :
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

Avec les versions prcdentes de JDBC, il fallait utiliser la mthode executeUpdate() avec une requte SQL. Maintenant pour raliser ces mises jour, JDBC 2.0 propose de les raliser via des appels de mthodes plutt que dutiliser des requtes SQL.

Claude Duvallet 17/17

Programmation en JAVA