Manipulation des bases de données en Java avec JDBC

Architecture de l'API JDBC

JDBC (Java Database Connectivity) est une API standard de Java qui permet d'interagir avec des systèmes de gestion de bases de données relationnelles (SGBDR). Elle repose sur un ensemble d'interfaces et de classes situées principalement dans le package java.sql.

Composant Type Rôle principal
DriverManager Classe Gère la liste des pilotes de base de données et établit la connexion via une URL spécifique.
Connection Interface Représente une session physique avec la base de données.
Statement Interface Permet d'acheminer des requêtes SQL statiques vers la base de données.
ResultSet Interface Stocke les données extraites de la base après une requête de sélection (SELECT).
SQLException Classe Gère les erreurs liées à l'accès aux données ou à la syntaxe SQL.

Configuration de l'environnement

Pour utiliser JDBC avec un moteur spécifique comme MySQL, il est nécessaire d'intégrer le pilote (Driver) au projet :

  1. Télécharger le fichier JAR du connecteur (ex: mysql-connector-java.jar).
  2. Créer un répertoire lib à la racine du projet et y placer le fichier.
  3. Ajouter le JAR au "Build Path" ou aux bibliothèques du projet dans votre IDE.

Processus de développement JDBC

1. Chargement du pilote

Cette étape enregistre la classe du pilote auprès du DriverManager afin qu'il puisse identifier le protocole de connexion.

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

2. Établissement de la connexion

On définit les paramètres d'accès : l'URL JDBC, l'identifiant et le mot de passe.

String dbUrl = "jdbc:mysql://localhost:3306/gestion_stock";
String user = "admin";
String pass = "secret123";

Connection cnx = DriverManager.getConnection(dbUrl, user, pass);

3. Création de l'objet de commande

L'interface Statement est utilisée pour envoyer des instructions SQL.

Statement instruction = cnx.createStatement();

4. Exécution de la requête SQL

Selon le type de requête, on utilise différentes méthodes :

  • executeUpdate() : Pour INSERT, UPDATE, DELETE (renvoie le nombre de lignes modifiées).
  • executeQuery() : Pour les requêtes SELECT (renvoie un objet ResultSet).
String sqlInsert = "INSERT INTO articles (code, designation, prix) VALUES ('A01', 'Ecran LED', 150.00)";
int lignesImpactees = instruction.executeUpdate(sqlInsert);

if (lignesImpactees > 0) {
    System.out.println("Insertion réussie.");
}

5. Fermeture des ressources

Il est impératif de libérer les resources dans l'ordre inverse de leur ouverture.

instruction.close();
cnx.close();

Exploitation des résultats avec ResultSet

L'objet ResultSet maintient un curseur pointant sur la ligne actuelle des données.

String query = "SELECT id_user, nom_complet, email FROM utilisateurs";
ResultSet rs = instruction.executeQuery(query);

while (rs.next()) {
    // Extraction par index de colonne (commence à 1)
    int id = rs.getInt(1);
    
    // Extraction par nom de colonne
    String nom = rs.getString("nom_complet");
    String mail = rs.getString("email");
    
    System.out.println("ID: " + id + " | Nom: " + nom + " | Mail: " + mail);
}

Gestion des erreurs courantes

Lors du développement JDBC, plusieurs exceptions peuvent survenir :

  • ClassNotFoundException : Le fichier JAR du pilote est manquant ou le nom de la classe est incorrect.
  • SQLException : Erreur de syntaxe SQL, paramètres de connexion invalides ou violation de contrainte (ex: clé primaire dupliquée).
  • MySQLSyntaxErrorException : Souvent causée par l'oubli de guillemets simples autour des valeurs de type String dans la requête SQL.

Étiquettes: JDBC Java MySQL SQL database

Publié le 29 octobre à 06h31