TP : JAVA JDBC

Se connecter à une base de données MySQL

Pour fournir une structure de base de données MySQL et une manière d’afficher un menu avec des options telles que l’insertion, la suppression, la modification et l’affichage de la base de données, voici un exemple complet :

  1. Structure de la base de données :

La structure de la base de données MySQL est assez simple. Nous aurons une table appelée students avec trois colonnes : id, name, et age. Voici le script SQL pour créer cette table :

CREATE TABLE IF NOT EXISTS students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT
);
  1. Téléchargement du pilote MySQL Connector/J :

Vous pouvez télécharger le pilote JDBC MySQL (Connector/J) à partir du lien que vous avez fourni : MySQL Connector/J Downloads.

  1. Affichage du menu et interactions avec la base de données :

Voici un exemple de programme Java qui utilise JDBC pour interagir avec la base de données selon les fonctionnalités demandées :

import java.sql.*;
import java.util.Scanner;

public class StudentManager {
    static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
    static final String USER = "username";
    static final String PASS = "password";

    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
            Statement stmt = conn.createStatement();

            // Création de la table s'il elle n'existe pas déjà
            String createTableSQL = "CREATE TABLE IF NOT EXISTS students (" +
                                    "id INT AUTO_INCREMENT PRIMARY KEY," +
                                    "name VARCHAR(255) NOT NULL," +
                                    "age INT)";
            stmt.executeUpdate(createTableSQL);

            afficherMenu(conn, stmt);

            // Fermeture des ressources
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void afficherMenu(Connection conn, Statement stmt) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        int choix;

        do {
            System.out.println("\nMenu:");
            System.out.println("1. Ajouter un étudiant");
            System.out.println("2. Afficher les étudiants");
            System.out.println("3. Modifier un étudiant");
            System.out.println("4. Supprimer un étudiant");
            System.out.println("5. Quitter");
            System.out.print("Entrez votre choix: ");
            choix = scanner.nextInt();

            switch (choix) {
                case 1:
                    ajouterEtudiant(conn);
                    break;
                case 2:
                    afficherEtudiants(stmt);
                    break;
                case 3:
                    modifierEtudiant(conn);
                    break;
                case 4:
                    supprimerEtudiant(conn);
                    break;
                case 5:
                    System.out.println("Au revoir !");
                    break;
                default:
                    System.out.println("Choix invalide. Veuillez réessayer.");
            }
        } while (choix != 5);
    }

    public static void ajouterEtudiant(Connection conn) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Nom de l'étudiant: ");
        String nom = scanner.nextLine();
        System.out.print("Âge de l'étudiant: ");
        int age = scanner.nextInt();

        String sql = "INSERT INTO students (name, age) VALUES (?, ?)";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.setString(1, nom);
        preparedStatement.setInt(2, age);
        preparedStatement.executeUpdate();

        System.out.println("Étudiant ajouté avec succès.");
    }

    public static void afficherEtudiants(Statement stmt) throws SQLException {
        String sql = "SELECT * FROM students";
        ResultSet rs = stmt.executeQuery(sql);

        System.out.println("\nListe des étudiants:");
        while (rs.next()) {
            int id = rs.getInt("id");
            String nom = rs.getString("name");
            int age = rs.getInt("age");
            System.out.println("ID: " + id + ", Nom: " + nom + ", Âge: " + age);
        }
    }

    public static void modifierEtudiant(Connection conn) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("ID de l'étudiant à modifier: ");
        int id = scanner.nextInt();
        scanner.nextLine(); // pour consommer le retour à la ligne

        System.out.print("Nouveau nom de l'étudiant: ");
        String nom = scanner.nextLine();
        System.out.print("Nouvel âge de l'étudiant: ");
        int age = scanner.nextInt();

        String sql = "UPDATE students SET name=?, age=? WHERE id=?";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.setString(1, nom);
        preparedStatement.setInt(2, age);
        preparedStatement.setInt(3, id);
        preparedStatement.executeUpdate();

        System.out.println("Étudiant mis à jour avec succès.");
    }

    public static void supprimerEtudiant(Connection conn) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("ID de l'étudiant à supprimer: ");
        int id = scanner.nextInt();

        String sql = "DELETE FROM students WHERE id=?";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.setInt(1, id);
        preparedStatement.executeUpdate();

        System.out.println("Étudiant supprimé avec succès.");
    }
}

Dans ce programme, vous devrez remplacer "username" et "password" par le nom d’utilisateur et le mot de passe de votre base de données MySQL. Assurez-vous également que votre serveur MySQL fonctionne sur localhost et écoute sur le port 3306, sinon, mettez à jour DB_URL avec les valeurs appropriées.

Cet exemple fournit un menu interactif à l’utilisateur où il peut sélectionner différentes options pour interagir avec la base de données, y compris l’insertion, la sélection, la mise à jour et la suppression des étudiants.