Médiaforma

All posts tagged jdbc

Pour vous entraîner à utiliser une base de données, affichez le contenu de la table membres dans un contrôle JTable.

Voici le résultat à obtenir :

 

 

Indices : vous utiliserez les méthodes setHeaderValue() et setValueAt() pour définir respectivement l’en-tête et les données de la table.

 

Solution

Pour que la table soit remplie dès l’ouverture de l’application, vous pouvez utiliser la méthode formWindowActivated() :

private void formWindowActivated(java.awt.event.WindowEvent evt) {
Connection connexion = null;
try {
    Class.forName("com.mysql.jdbc.Driver");
    connexion = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "");
    Statement state = connexion.createStatement();
    ResultSet result = state.executeQuery("SELECT * FROM membres");
    ResultSetMetaData resultMeta = result.getMetaData();

    //On affecte le nom des colonnes au header du jTable
    TableColumn column1;
    for(int i=0;i<resultMeta.getColumnCount();i++) {
      column1 = jTable1.getTableHeader().getColumnModel().getColumn(i);
      column1.setHeaderValue(resultMeta.getColumnName(i+1).toUpperCase());
    }

    // On affiche les données dans le jTable
    int j=0;
    while(result.next()){
      for(int i = 0; i < resultMeta.getColumnCount(); i++)
          jTable1.setValueAt(result.getObject(i+1).toString(), j, i);
      j=j+1;
      System.out.println();
    }

    result.close();
    state.close();
    connexion.close();

    } catch (Exception e) {
      e.printStackTrace();
    }
}

Créez un nouveau projet de type Application Java. Nommez-le JDBC1 et cochez la case Create Main Class.

Pour pouvoir interagir avec une base de données MySQL, vous devez passer par un pilote JDBC. Ce pilote est déjà installé dans NetBeans. Vous n’aurez donc pas à l’installer manuellement. Dans le volet Projects, cliquez du bouton droit sur Libraries et choisissez Add Library dans le menu. La boîte de dialogue Add Library s’affiche. Sélectionnez la bibliothèque MySQL JDBC Driver et validez en cliquant sur Add Library :

 

 

Maintenant, votre projet peut accéder au pilote JDBC MySQL, et donc, à toute base de données MySQL.

Insérez les instructions suivantes dans le code généré par NetBeans :

package jdbc1;

import com.mysql.jdbc.Driver;
import java.sql.*;

public class JDBC1 {

public static void main(String[] args) throws SQLException {
Connection connexion = null;
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Le pilote JDBC MySQL a été chargé");
connexion = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "");

Statement state = connexion.createStatement();
ResultSet result = state.executeQuery("SELECT * FROM membres");
ResultSetMetaData resultMeta = result.getMetaData();

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(resultMeta.getColumnName(i).toUpperCase() + " | ");
System.out.println();

while(result.next()){
for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(result.getObject(i).toString() + " | ");
System.out.println();
}

result.close();
state.close();
connexion.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}

 

Dans un premier temps, on s’assure que la connexion avec le pilote JDBC est possible. Cette instruction est protégée par une instruction try. Si tout se passe bien, un message indiquant que le pilote JDBC est chargé est affiché dans la console :

Class.forName("com.mysql.jdbc.Driver");
System.out.println("Le pilote JDBC MySQL a été chargé");

Dans un deuxième temps, on établit une connexion avec la base de données java :

connexion = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "");

Dans le premier paramètre passé à la fonction getConnection() :

  • jdbc:mysql correspond au début de l’URL de connexion. Cet bloc commence toujours par jdbc:. Dans notre cas, nous utilisons mysql, la dénomination mysql: suit donc le début de l’URL.
  • localhost indique la localisation de la machine physique sur le réseau. Ici, nous travaillons en local, d’où le terme localhost.
  • test est le nom de la base de données.

Les deux paramètres suivants correspondent au nom d’utilisateur et au mot de passe utilisés pour établir la connexion. Ici, root et aucun mot de passe.

 

Dans un troisième temps, on crée un objet Statement. Par son intermédiaire, on pourra exécuter des commandes SQL pour interroger la base de données et obtenir les résultats correspondants.

Statement state = connexion.createStatement();

 

Dans un quatrième temps, on définit une requête SQL en créant un objet ResultSet à partir de l’objet Statement défini dans l’étape précédente :

ResultSet result = state.executeQuery("SELECT * FROM membres");

 

Dans un cinquième temps, on récupère les métadonnées de la table.

ResultSetMetaData resultMeta = result.getMetaData();

 

Par leur intermédiaire, on pourra obtenir le nombre de colonnes dans la table avec getColumnCount() et le nom des colonnes avec getColumnName() :

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(resultMeta.getColumnName(i).toUpperCase() + " | ");
System.out.println();

 

Dans un sixième temps, on fait une boucle while pour récupérer tous les enregistrements de la table :

while(result.next()){

Les données d’un enregistrement sont récupérées une par une avec une boucle for et affichées dans la console :

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(result.getObject(i).toString() + " | ");

 

Après chaque affichage, on saute une ligne pour afficher les enregistrements les uns sous les autres :

System.out.println();

 

Le bloc d’instructions suivant ferme les objets ouverts avec la méthode close() :

result.close();
state.close();
connexion.close();

 

Enfin, la méthode catch() affiche le code de l’erreur si une instruction provoque une erreur dans le bloc try :

catch (Exception e) {
e.printStackTrace();
}

Une fois que WAMP Server est opérationnel, vous allez créer la base de données java et la table membres. Cliquez sur l’icône de WAMP Server dans la zone de notification et choisissez phpMyAdmin dans le menu. Connectez-vous sous le nom admin sans mot de passe. Cliquez sur Nouvelle base de données dans l’angle supérieur gauche de la fenêtre :

 

 

Définissez la base de données java et la table membres, composée de quatre champs : id de type INT autoincrémenté, nom, prenom et pass de type TEXT.

 

 

 

Ajoutez les données suivantes dans cette table :

 

 


Pour tester facilement JDBC, nous allons installer une base de données locale. Pour cela, vous allez installer :

  1. Un serveur Web Apache. C’est lui qui sera chargé de délivrer les pages Web aux visiteurs
  2. Le logiciel de gestion de bases de données MySQL. Vous pourrez ainsi créer des bases de données et les interroger pour créer vos pages Web dynamiquement.

Plusieurs paquetages incluant Apache et MySQL sont disponibles. Par exemple :

  • WAMP Server sous Windows ;
  • MAMP sous Mac OS X ;
  • XAMPP sous Linux.

Vous travaillez certainement sur un ordinateur fonctionnant sous Windows XP, 7 ou 8. Dans ce cas, rendez-vous sur la page http://sourceforge.net/projects/wampserver/ et installez le logiciel WAMP Server.

 

 

A la fin de l’installation, le pare-feu de Windows se manifeste :

 

 

Cliquez sur Autoriser l’accès pour autoriser Apache à communiquer sur votre réseau.

Acceptez toutes les options par défaut jusqu’à la fin de l’installation.

WAMP Server s’est-il bien installé ?

Une icône représentant WAMP Server devrait se trouver dans la Zone de notification. Si ce n’est pas le cas, tapez wamp dans le menu Démarrer (Windows XP/7) ou dans la page d’accueil (Windows 8) et cliquez sur Start WampServer. Quelques secondes plus tard, une icône représentant Wamp Server est disponible dans la Zone de notification :

 

 

 

Si l’icône de WAMP Server reste orange dans la zone de notification, il se peut que le service Apache ou MySQL ne fonctionne plus.

Dans ce cas :

  • cliquez sur l’icône de WAMP Server, puis sur Apache, Service et Installer le service.
  • cliquez sur l’icône de WAMP Server, puis sur MySQL, Service et Installer le service.

 

Il se peut aussi que le port 80 soit utilisé par un autre service que Apache.

Cliquez sur l’icône de WAMP Server, puis sur Apache, Service et Tester le port 80.

Si le port 80 n’est pas utilisé par Apache :

  • cliquez sur l’icône de WAMP Server, sur Apache puis sur httpd.conf.
  • recherchez le port 80 dans ce fichier et remplacez-le par 81.
  • fermez puis redémarrez Wamp Server pour prendre en compte la nouvelle configuration.

Si vous avez choisi le port 81, vous accèderez à votre site avec l’URL http://localhost:81. Nous reviendrons sur ce point par la suite.

 

Par défaut, WAMP s’installe en anglais. Pour lui faire parler la langue de Molière, cliquez du bouton droit sur son icône, pointez Language et cliquez sur French.

 

 

Pour savoir si WAMP s’est bien installé, cliquez sur son icône et choisissez Localhost dans le menu. Au bout de quelques instants, la page d’accueil de WAMP Server s’affiche dans votre navigateur par défaut. Apache est donc opérationnel :

 

 

Remarque

Si cette page refuse de s’afficher, relancez Apache. Pour cela, cliquez sur l’icône de WAMP Server, puis sur Redémarrer les services.

Si cela n’a toujours aucun effet, désinstallez puis réinstallez WAMP Server.


Cette section va s’intéresser à JDBC (Java DataBase Connectivity). Ce terme désigne un ensemble de classes Java destinées à se connecter et à interagir sur des bases de données.

Les bases de données permettent de sauvegarder des données dans une ou plusieurs tables. Chaque table est composée d’une ou de plusieurs champs et d’un ou de plusieurs enregistrements. Par exemple, la table « membres » pourrait contenir les données suivantes :

 

id Nom Prénom Mot de passe
1 Grandjean Pierre pGrandjean
2 Petit Anne aPetit
4 Gress Norbert nGress

 

Pour dialoguer avec une base de données en Java, vous devez suivre les sept étapes suivantes :

  1. Chargement d’un pilote JDBC
  2. Définition de l’URL de connexion à la base de données
  3. Connexion avec la base de données
  4. Création d’un objet Statement
  5. Exécution d’une requête SQL
  6. Traitement des résultats
  7. Fermeture de la connexion