Connexion Java avec MySql Database

mysql-connector-java-mysql-jdbc-driver

Nous allons vous présenter un guide complet  étape par étape pour créer une connexion Java avec une base de donnée MySql en utilisant l’IDE Eclipse et le driver JBDC pour MySql.

1 – Créer un projet Eclipse

Un projet dans Eclipse est essentiellement un dossier contenant tout le code source et d’autres fichiers nécessaires.
construisez votre programme. Commençons par créer un projet pour votre programme.

1. Ouvrez Eclipse
2. Dans le menu Fichier, sélectionnez  New → Java Project

1-mysql-java-jdbc-newJava-project

3. Donnez un nom à votre projet, par exemple DBDemo.
Vous pouvez utiliser les valeurs par défaut pour tous les autres paramètres. Notez le dossier du projet, vous devrez vous en souvenir plus tard.

2-demo-db-java-mysql-connector-jdbc

Cliquez ensuite sur le bouton Finish, pour créer le projet. Vous devriez à ce moment là voir un projet Java vide qui ressemble à ceux-ci :

3-demo-db-Java-mysql-connector-jdbc-driver-eclipse

4 – Créer  un package et une classe Java

Choisissez depuis le menu  File  ->New ->package

et puis donnez un nom à votre package  demojdbc par exemple

Choisissez ensuite depuis le menu  File  ->New ->Class

5-mysql-java-jdbc-newJava-class

Donnez ensuite un nom à la classe  DemoJdbc par exemple. Vous obtenez un projet de ce type :

6-mysql-java-jdbc-newJava-class

2 – Téléchargement et installation du driver JDBC pour mysql

2.1 – Téléchargement du driver JDBC pour mysql

Pour pouvoir connecter Java avec mysql, il nécessaire, télécharger et installer mysql connector for Java. Ce dernier est téléchargeable depuis l’adesse:  https://dev.mysql.com/downloads/file/?id=480091

downlod-mysql-connector-java

Cette page, vous invite à créer un compte et à vous connecter. Mais vous pouvez surpasser cette étape en cliquent sur le lien en bas :

No thanks, just start my download

Après avoir télécharger l’archive, décompressez la et vous allez trouver à l’intérieur un fichier jar nommé : mysql-connector-java-5.1.47-bin.jar :

mysql-connector-jar-file-bin

Sélectionnez votre projet sur Eclipse, et cliquez sur  le menu File  ->New -> Folder, pour créez un nouveau dossier, donnez le un nom lib  par exemple :

mysql-connector-jar-file-bin-lib-folder

Maintenant à l’aide de la sourie, faite un click droit sur le dossier lib et pointez sur le menu import:

mysql-connector-for-java-click-droit-import

Ensuite depuis le menu General, choisissez le sous menu File System:

mysql-connector-for-java-import-general-system-files

Continuez ensuite votre navigation jusqu’à ce que vous trouviez le fichier  mysql-connector-java-5.1.47-bin.jar  , séléctionnez le et cliquez sur le bouton Finish:

mysql-connector-java-jar-select

Le fichier est maintenant visible sur l’explorateur de fichier d’Eclipse :

mysql-connector-for-java-lib-jar

Veuillez ensuite informer Eclipse du fichier  : mysql-connector-java-5.1.47-bin.jar, afin de le prendre en compte :

A l’aide du bouton droit de la sourie sur le dossier lib de votre projet Eclipse, cliquez sur Properties  et choisissez ensuite le menu Java Build Path:

mysql-connector-for-java-library-add-jar

Sélectionnez ensuite l’archive jar qui se trouve dans le dossier  lib du projet Eclipse :

mysql-connector-java-jar-selection

Si les étapes sont correctement exécutés vous devriez voir l’archive jar dans Referenced Librairies:

mysql-connector-java-jar-referenced-librairies

3 – Connexion de Java avec Mysql en utilisant le driver JDBC

3.1 – Lecture et affichage des données

Afin de pouvoir créer un test de connexion  de Java avec MySql, il va falloir installer un serveur MySql. Plusieurs choix s’offrent à vous WampServer , xampp, EasyPHP…Nous vous recommandons pour cela d’utiliser WampServer.

Voici un  tutoriel vidéo qui vous explique comment utiliser wampserver. Commencez par lancer votre serveur  et  créez ensuite une base de donnée, nommez la school par exemple et au sein de laquelle créer une table MySql comportant les champs :  id,  nom, email, age… nommez la students par exemple :

mysql-connector-for-java-base-de-donnees-mysql

Maintenant, tout est près, vous pouvez  donc commencer à communique le langage Java avec les bases de données MySql. Pour cela  veuillez suivre les étapes suivantes :

1 – Charger le driver mysql 

Class.forName("com.mysql.jdbc.Driver");

2 – Créer un objet connection en utilisant la classe Connection:

Connection con=DriverManager.getConnection("jdbc:mysql://localhost/school","root","");

3 – Créer un  état de connexion 

Statement stm=con.createStatement();

4 – Créer et exécuter une requete  sql  en utilisant la classe  ResultSet 

ResultSet res=stm.executeQuery("select * from students");

5 – parcourir les données de la table res    

Les données sont maintenant récupérées sur l’objet res pour accéder à la valeur d’un champ on utilise les méthodes getInt(numéro de la colonne), getDouble(numéro de la colonne), getString( numéro de la colonne)… selon le type du champ de la table ( int, double, String…).

Exemple pour la 2ème colonne qui contient les noms du type String on utilise la syntaxe :

res.getString(2);

Et afin de parcourir les données successivement une après l’autre du début de la sélection jusqu’à la fin de la sélection, on utilise la boucle while :

while (res.next()){ 
	System.out.println("id :"+res.getInt(1)+"   nom : "+res.getString(2) 
//Cet exemple affiche les données de la 1ère colonne et les données de la 2ème colonne
}

6 – Fermer la connection

con.close(); 

Finalement pour que le code fonctionne correctement sans aucun problème, il doit être encadré dans un try-catch:

Exemple avec code complet

import java.sql.*;
public class DemoJdbc {
	   public  static  void main (String[] args) {
		    try{
		        // 1 - charger le driver mysql
		        Class.forName("com.mysql.jdbc.Driver");
		        // 2 - créer la connection
		        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/school","root","");
		        // 3 - créer un état de connexion
		        Statement stm=con.createStatement();
		        // 4 - Créer et exécuter une requette
		        ResultSet res=stm.executeQuery("select * from students");
		        // 5 - parcour les données de la table res
		       while (res.next()){
		            System.out.println("id :"+res.getInt(1)+"   nom : "+res.getString(2) +"     Email : "+ res.getString(3));
		            System.out.println("-----------------------------------------------");
		        }  
		    //  6 - Fermer la connection
		      con.close();
		    // 7..traitement des exeption
		        }catch (Exception e) {
		            System.out.println("ERROR :"+e.getMessage());
		        }

		        }

}

Ce qui affiche après exécution :

id :1 nom : David Email : david@gmail.com
——————————————————
id :2 nom : Jessica Email : Jessica@gmail.com
——————————————————
id :3 nom : Robert Email : robert@gmail.com
——————————————————
id :4 nom : Alberto Email : Albert@gmail.com
——————————————————
id :5 nom : Paul Email : Paul@gmail.com
——————————————————
id :6 nom : Hilbert Email : Hilbert@gmail.com
——————————————————
id :7 nom : Catherine Email : catherine@gmail.com
——————————————————
id :8 nom : Jonathan Email : Jonathan@gmail.com
——————————————————
id :9 nom : Orlando Email : orlando@gmail.com
——————————————————
id :10 nom : Tobias Email : tobias@gmail.com
——————————————————
id :11 nom : Martin Email : martin@gmail.com
——————————————————
id :12 nom : Bernard Email : bernard@gmail.com
——————————————————

3.2 – Insertion des donnée

Pour insérer des données mysql avec Java, on procède de la même manière que précédemment avec une toute petite modification, oon remplace juste le code de sélection de la table par une requête d’insertion des données:

String query = "INSERT INTO students (`name` , `email`) " + "VALUES ( 'Robert', 'robert@gmail.com')";
	   stm.executeUpdate(query);

Code final

import java.sql.*;
public class AddStudents {

	public static void main(String[] args) {
		try{
	        // 1 - charger le driver mysql
	        Class.forName("com.mysql.jdbc.Driver");
	        // 2 - créer la connection
	        //:3306/Peoples?autoReconnect=true&useSSL=false
	        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/mydatabase?&useSSL=false","root","root");
	        // 3 - créer un état de connexion
	        Statement stm=con.createStatement();
	        // 4 - Créer et exécuter une requette
	        String query = "INSERT INTO students (`name` , `email`) " + "VALUES ( 'Robert', 'robert@gmail.com')";
	        stm.executeUpdate(query);
	        // 5 - parcourir les données de la table 
	       /* 
	       while (res.next()){
	            System.out.println("id :"+res.getInt(1)+"   nom : "+res.getString(2) +"     Email : "+ res.getString(3));
	            System.out.println("-----------------------------------------------");
	        } 
	        */ 
	    //  6 - Fermer la connection
	      con.close();
	    // 7..traitement des exeption
	        }catch (Exception e) {
	            System.out.println("ERROR :"+e.getMessage());
	        }

	}

}