Problème Site en Java lié avec BDD (MySQL Xamppp + Eclipse)

Fermé
Utilisateur anonyme - Modifié le 24 nov. 2020 à 11:26
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 24 nov. 2020 à 17:58
Bonjour,

Bonjour.

Toujours dans le cadre de mes études, je dois créer un site dynamique en Java avec une Bdd préalablement installée avec Xampp.

Or, rien ne s'affiche dans ma console, uniquement ceci. Alors que j'ai bien installé le bin.jar et les autres librairies.

Ce site est celui réalisé durant les cours et marchait l'autre jour, mais ne repère pas quelles sont pas mes erreurs. Je dois me servir de ce modèle pour faire un autre site.

Merci d'avance pour m'aider à venir à bout de ce problème.

Logiciels : Windows 10 / Xampp / Eclipse


Pour la BDD
package modele;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class Bdd
{
    private String serveur, bdd, user, mdp ;
    private Connection maConnexion ;
 
    public Bdd(String serveur, String bdd, String user, String mdp) {
        this.serveur = serveur;
        this.bdd = bdd;
        this.user = user;
        this.mdp = mdp;
    }
     
    public void chargerPilote ()
    {
        try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(ClassNotFoundException exp) {
            System.out.println("Le pilote JDBC n'existe pas");
        }
    }
    public void seConnecter(){
        this.chargerPilote();
        String url = "jdbc:mysql://" + this.serveur + "/" + this.bdd ;
        try
        {
            this.maConnexion = DriverManager.getConnection(url, this.user, this.mdp);
        }
        catch(SQLException exp)
        {
            System.out.println("Erreur de connexion à url : " + url);
        }
    }
    public void seDeconnecter ()
    {
        try {
            if (this.maConnexion != null) {
                this.maConnexion.close();
            }
        }
        catch (SQLException exp)
        {  
            System.out.println("Erreur lors de la fermeture de la connexion ");
            //exp.printStackTrace();
        }
    }
    public Connection getMaConnexion ()
    {
        return this.maConnexion;
    }
     
     
}

Pour le modèle :
package modele;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
 
import controleur.Train;
 
public class Modele
{
    private static Bdd uneBdd = new Bdd ("localhost", "sncf", "root","root");
    //new Bdd ("localhost", "sncf", "root",""); pour PC
     
    public static ArrayList<Train> selectAllTrains()
    {
        ArrayList<Train> trains = new ArrayList<Train>();
        try {
            uneBdd.seConnecter();
            String requete = "select * from train ; ";
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet desResultats = unStat.executeQuery(requete);
            while (desResultats.next())
            {
                int idTrain = desResultats.getInt("idtrain");
                int nbWagons = desResultats.getInt("nbwagons");
                String designation = desResultats.getString("designation");
                String dateCirculation = desResultats.getString("datecirculation");
                String typeTrain = desResultats.getString("typetrain");
                Train unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
                trains.add(unTrain);
            }
            desResultats.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch (SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete select.");
        }
        return trains;
         
    }
 
    public static void insertTrain(Train unTrain) {
         
        String requete ="insert into train values (null,'"+
                        unTrain.getDesignation()+"','"+unTrain.getDateCirculation()
                        + "',"+unTrain.getNbWagons()+",'"+unTrain.getTypeTrain()
                        +"');";
        try {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch (SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete :" + requete);
        }
    }
 
    public static void deleteTrain(int idTrain) {
        String requete = "DELETE FROM train WHERE idtrain="+idTrain+";";
        try
        {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete : "+requete);
        }
         
    }
 
    public static Train selectWhere(int idTrain) {
        Train unTrain = null;
         
        String requete = "select * from train where idtrain = " + idTrain + ";";
         
        try {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet leResultat = unStat.executeQuery(requete);
            if (leResultat.next())
            {
                int nbWagons = leResultat.getInt("nbwagons");
                String designation = leResultat.getString("designation");
                String dateCirculation = leResultat.getString("datecirculation");
                String typeTrain = leResultat.getString("typetrain");
                //instancier le train récupéré de la bdd
                unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
            }
            leResultat.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete : "+requete);
        }
         
        return unTrain ;
    }
 
    public static void updateTrain(Train unTrain) {
         
        String requete = "update train set nbwagons = "+unTrain.getNbWagons()
        +" , designation = '"+unTrain.getDesignation()
        +"' , datecirculation = '"+unTrain.getDateCirculation()
        +"' , typetrain = '"+unTrain.getTypeTrain()
        +"' where idtrain= " +unTrain.getIdTrain()+";";
        try
        {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete : "+requete);
        }
         
    }
 
    public static ArrayList<Train> selectAllTrains(String mot) {
         
        ArrayList<Train> trains = new ArrayList<Train>();
        String requete = "select * from train where designation like '%" + mot + "%'"
                + " or typetrain like '%" + mot + "%' " + " or datecirculation like '%" + mot + "%' ;" ;
        try {
            uneBdd.seConnecter();
         
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet desResultats = unStat.executeQuery(requete);
            while (desResultats.next())
            {
                int idTrain = desResultats.getInt("idtrain");
                int nbWagons = desResultats.getInt("nbwagons");
                String designation = desResultats.getString("designation");
                String dateCirculation = desResultats.getString("datecirculation");
                String typeTrain = desResultats.getString("typetrain");
                Train unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
                trains.add(unTrain);
            }
            desResultats.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch (SQLException exp)
        {
            System.out.println("Erreur d'execution de la requete : " + requete);
        }
        return trains;
    }
     
}

Pour le contrôleur :
package controleur;
 
import java.util.ArrayList;
import java.util.Scanner;
 
import modele.Modele;
import vue.VueTrain;
 
public class SNCF {
    private ArrayList<Train> lesTrains ;
     
    public SNCF ()
    {
        this.lesTrains = Modele.selectAllTrains(); //chargement depuis la bdd
    }
    public void lister ()
    {
        System.out.println("------- Lister les trains ---------");
        //actualistion des données
        this.lesTrains = Modele.selectAllTrains();
        for(Train unTrain : this.lesTrains)
        {
            //appel la vue pour afficher un train
            VueTrain.afficherTrain(unTrain);
        }
    }
    public void ajouterTrain ()
    {
        Train unTrain = VueTrain.saisirTrain();
        this.lesTrains.add(unTrain);
        Modele.insertTrain(unTrain);
        System.out.println("Train ajouté avec succès ! ");
    }
     
    public void supprimerTrain()
    {
        int idTrain = VueTrain.saisirId(" supprimer ");
        for(Train unTrain : this.lesTrains)
        {
            if (unTrain.getIdTrain()==idTrain) {
                this.lesTrains.remove(unTrain);
                break;
            }
        }
        Modele.deleteTrain(idTrain);
        System.out.println("Suppression réussie");
    }
     
    public void modifierTrain ()
    {
        int idTrain = VueTrain.saisirId(" modifier ");
        Train unTrain = Modele.selectWhere (idTrain);
         
        unTrain = VueTrain.modifierTrain(unTrain);
         
        Modele.updateTrain(unTrain);
         
        //mise à jour dans l'ArrayList
        for(Train leTrain : this.lesTrains)
        {
            if (leTrain.getIdTrain()==idTrain) {
                leTrain.setNbWagons(unTrain.getNbWagons());
                leTrain.setDateCirculation(unTrain.getDateCirculation());
                leTrain.setDesignation(unTrain.getDesignation());
                leTrain.setTypeTrain(unTrain.getTypeTrain());
                break;
            }
        }
        System.out.println("Modification réussie");
    }
    public void rechercherTrain()
    {
        String mot = VueTrain.saisirMot();
        ArrayList<Train> trainsRecherches = Modele.selectAllTrains(mot);
        System.out.println("---- Liste de trains recherchés ----");
        for(Train unTrain : trainsRecherches)
        {
            //appel la vue pour afficher un train
            VueTrain.afficherTrain(unTrain);
        }
    }
    public void menu ()
    {
        int choix =0;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.println("------- Menu de gestion des train ---------");
            System.out.println("1- Afficher tous les trains ");
            System.out.println("2- Ajouter un train ");
            System.out.println("3- Supprimer un train ");
            System.out.println("4- Modifier les infos d'un train ");
            System.out.println("5- Recherche par mot clé ");
            System.out.println("0- Quitter ");
            System.out.println("Votre choix :");
            choix = sc.nextInt();
            switch (choix)
            {
            case 1 : this.lister(); break;
            case 2 : this.ajouterTrain(); break;
            case 3 : this.supprimerTrain(); break;
            case 4 : this.modifierTrain();break;
            case 5 : this.rechercherTrain(); break;
            }
        }while (choix !=0);
    }
    public static void main(String[] args) {
          
        SNCF uneSncf = new SNCF();
        uneSncf.menu();
    }
 
}
A voir également:

5 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 nov. 2020 à 11:25
Bonjour,

"Or, rien ne s'affiche dans ma console, uniquement ceci. "
Et c'est quoi ceci ?
0
Utilisateur anonyme
24 nov. 2020 à 11:56
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Utilisateur anonyme
24 nov. 2020 à 12:54
Les try/catch que tu as mis en place masquent complètement l'erreur, et pire ils ne sont pas bloquants.

Donc d'une part tu as une erreur dans seConnecter, mais on ne sait pas laquelle vu que tu as juste "Erreur de connexion" à la place, et d'autre part malgré le fait que tu n'ais pas réussi à te connecter tu continues le programme, ce qui provoque d'autres erreurs par la suite (mais qu'il faut ignorer vu que c'est la première erreur le problème)

Il faudrait donc corriger tes try/catch pour que l'on puisse voir l'exception sous-jacente afin d'interpréter l'erreur et la corriger :

try {
    // ...
} catch(...Exception e) {
    e.printStackTrace(); // affichage de l'exception
    // ou
    throw new ...Exception(e); // levée d'une autre exception contenant la première
}


Remarque : la classe Bdd est plutôt très mal fichue, pour qu'elle soit utile il faudrait la revoir de fond en comble.

Un exemple :
import java.sql.*;

public abstract class AbstractConnection {
    private final String url;
    private final String user;
    private final String mdp;

    protected AbstractConnection(String driver, String url, String user, String mdp, String testQuery) {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new UncheckedSQLException(new SQLException("Can't init driver: " + driver, e));
        }
        this.url = url;
        this.user = user;
        this.mdp = mdp;
        execute(connection -> {
            try (Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(testQuery)) {
                return null;
            }
        });
    }

    public final <E> E execute(ConnectionAction<E> connectionAction) {
        try (Connection connection = DriverManager.getConnection(url, user, mdp)) {
            return connectionAction.execute(connection);
        } catch (SQLException e) {
            throw new UncheckedSQLException(e);
        }
    }

    @FunctionalInterface
    public static interface ConnectionAction<E> {
        E execute(Connection connection) throws SQLException;
    }

    public static class UncheckedSQLException extends RuntimeException {
        private static final long serialVersionUID = 1L;

        public UncheckedSQLException(SQLException exception) {
            super(exception);
        }
    }
}

public class MySqlConnection extends AbstractConnection {
    public MySqlConnection(String serveur, String bdd, String user, String mdp) {
        super("com.mysql.jdbc.Driver", "jdbc:mysql://" + serveur + "/" + bdd, user, mdp, "SELECT count(*) FROM DUAL");
    }
}

private static final AbstractConnection sncfConnection = new MySqlConnection("localhost","sncf","root","root");

public static List<Train> getAllTrains(){
    return sncfConnection.execute(connection -> {
        try (Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM train")) {
            List<Train> trains = new ArrayList<>();
            while (rs.next()) {
                int idTrain = rs.getInt("idtrain");
                int nbWagons = rs.getInt("nbwagons");
                String designation = rs.getString("designation");
                String dateCirculation = rs.getString("datecirculation");
                String typeTrain = rs.getString("typetrain");
                trains.add(new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain));
            }
            return trains;
        }
    });
}
0
Utilisateur anonyme
24 nov. 2020 à 13:06
Comment puis-je corrige tout cela ? Comme c'est que le code du prof et qu'il ne nous a pas tout expliqué, j'avoue m'y perdre queqlue peu ... et ne comprends pas encore la notion du try catch ...

Merci.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 nov. 2020 à 13:20
Et bien le code du prof est très mal fait...

Le plus simple pour l'instant c'est de modifier tous les catch pour remplacer les System.out.println par un throw

Exemple :
       try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(ClassNotFoundException exp) {
            System.out.println("Le pilote JDBC n'existe pas");
        }

Devient :
       try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception e) {
            throw new IllegalStateException("Le pilote JDBC n'existe pas", e);
        }

Remarque : surtout ne pas oublier le
, e
en second paramètre, c'est ce qui permet de conserver la véritable cause de l'erreur, sinon tu ne pourras jamais savoir d'où vient exactement le problème.
0
Utilisateur anonyme
Modifié le 24 nov. 2020 à 16:03
Comme ceci ?

package modele;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Bdd 
{
 private String serveur, bdd, user, mdp ;
 private Connection maConnexion ; 

 public Bdd(String serveur, String bdd, String user, String mdp) {
  this.serveur = serveur;
  this.bdd = bdd;
  this.user = user;
  this.mdp = mdp;
 } 
 
 public void chargerPilote ()
 {
  try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception e) {
            throw new IllegalStateException("Le pilote JDBC n'existe pas", e);

 }
 public void seConnecter(){
  this.chargerPilote(); 
  String url = "jdbc:mysql://" + this.serveur + "/" + this.bdd ; 
  try
  {
   this.maConnexion = DriverManager.getConnection(url, this.user, this.mdp);
  }
  catch(Exception e) {
            throw new IllegalStateException("Erreur de connexion à url : " + url);
  }
 }
 public void seDeconnecter ()
 {
  try {
   if (this.maConnexion != null) {
    this.maConnexion.close();
   }
  }
  catch(Exception e) {
            throw new IllegalStateException("Erreur lors de la fermeture de la connexion ");
   //exp.printStackTrace();
  }
 }
 public Connection getMaConnexion ()
 {
  return this.maConnexion; 
 }
 
 
}

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 nov. 2020 à 15:24
Il ne faut surtout pas oublier le
, e
en second paramètre, c'est ce qui permet de conserver la véritable cause de l'erreur, sinon tu ne pourras jamais savoir d'où vient exactement le problème.

Tu l'as bien mis dans le premier catch (mais tu as oublié de fermer l'accolade...) par contre pour les deux autres il n'y est pas, ce qui signifie que tu continuerais encore à masquer l'erreur, alors que l'on veut l'afficher le plus précisément possible.
0
Utilisateur anonyme
Modifié le 24 nov. 2020 à 16:03
J'espère que cette fois, c'est bon.

package modele;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Bdd 
{
 private String serveur, bdd, user, mdp ;
 private Connection maConnexion ; 

 public Bdd(String serveur, String bdd, String user, String mdp) {
  this.serveur = serveur;
  this.bdd = bdd;
  this.user = user;
  this.mdp = mdp;
 } 
 
 public void chargerPilote (){
  try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception e, e) {
            throw new IllegalStateException("Le pilote JDBC n'existe pas", e);
  }
 }

 public void seConnecter(){
  this.chargerPilote(); 
  String url = "jdbc:mysql://" + this.serveur + "/" + this.bdd ; 
  try{
   this.maConnexion = DriverManager.getConnection(url, this.user, this.mdp);
  }
  catch(Exception e, e) {
            throw new IllegalStateException("Erreur de connexion à url : " + url);
  }
 }
 
 public void seDeconnecter (){
  try {
   if (this.maConnexion != null) {
    this.maConnexion.close();
   }
  catch(Exception e, e) {
            throw new IllegalStateException("Erreur lors de la fermeture de la connexion ");
   //exp.printStackTrace();
  }
 }
 public Connection getMaConnexion ()
 {
  return this.maConnexion; 
 }
 
 
}

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 nov. 2020 à 16:07
Ça ne peut pas être bon, tu vois bien que ça ne compile pas... (ou alors tu ne testes pas...)

J'ai écrit l'exemple tout à l'heure :

        catch(Exception e) {
            throw new IllegalStateException("Le pilote JDBC n'existe pas", e);
        }

Avec toi ça devient
  catch(Exception e, e) {
            throw new IllegalStateException("Erreur de connexion à url : " + url);
  }

Tu vois bien que le
, e)
dont je parle comme étant le second paramètre, il est sur le constructeur de l'exception, en aucun cas sur le catch (ça n'existe pas ça...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
Modifié le 24 nov. 2020 à 16:25

package modele;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Bdd
{
private String serveur, bdd, user, mdp ;
private Connection maConnexion ;

public Bdd(String serveur, String bdd, String user, String mdp) {
this.serveur = serveur;
this.bdd = bdd;
this.user = user;
this.mdp = mdp;
}

public void chargerPilote (){
try {
//Vérifier la présence du pilote
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e) {
throw new IllegalStateException("Le pilote JDBC n'existe pas", e);
}
}

public void seConnecter(){
this.chargerPilote();
String url = "jdbc:mysql://" + this.serveur + "/" + this.bdd ;
try{
this.maConnexion = DriverManager.getConnection(url, this.user, this.mdp);
}
catch(Exception e) {
throw new IllegalStateException("Erreur de connexion à url : " + url);
}
}

public void seDeconnecter (){
try {
if (this.maConnexion != null) {
this.maConnexion.close();
}
catch(Exception e) {
throw new IllegalStateException("Erreur lors de la fermeture de la connexion ");
//exp.printStackTrace();
}
}
public Connection getMaConnexion ()
{
return this.maConnexion;
}


}



J'ai toujours la même erreur pourtant ... et plus encore ...
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 nov. 2020 à 17:58
C'est normal d'avoir plus d'erreur, c'est le but même, pour comprendre ce qui se passe, sauf que tu n'en as toujours pas assez, car tu ne fais pas ce qu'il faut, il manque encore les causes des exceptions, les fameux
,e)
qu'il faut mettre partout !

Je reprends ton code de départ :

package modele;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class Bdd
{
    private String serveur, bdd, user, mdp ;
    private Connection maConnexion ;
 
    public Bdd(String serveur, String bdd, String user, String mdp) {
        this.serveur = serveur;
        this.bdd = bdd;
        this.user = user;
        this.mdp = mdp;
    }
     
    public void chargerPilote ()
    {
        try {
            //Vérifier la présence du pilote
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception e) {
            throw new IllegalStateException("Le pilote JDBC n'existe pas", e);
        }
    }
    public void seConnecter(){
        this.chargerPilote();
        String url = "jdbc:mysql://" + this.serveur + "/" + this.bdd ;
        try
        {
            this.maConnexion = DriverManager.getConnection(url, this.user, this.mdp);
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur de connexion à url : " + url, e);
        }
    }
    public void seDeconnecter ()
    {
        try {
            if (this.maConnexion != null) {
                this.maConnexion.close();
            }
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur lors de la fermeture de la connexion ", e);
        }
    }
    public Connection getMaConnexion ()
    {
        return this.maConnexion;
    }
     
     
}

package modele;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
 
import controleur.Train;
 
public class Modele
{
    private static Bdd uneBdd = new Bdd ("localhost", "sncf", "root","root");
    //new Bdd ("localhost", "sncf", "root",""); pour PC
     
    public static ArrayList<Train> selectAllTrains()
    {
        ArrayList<Train> trains = new ArrayList<Train>();
        try {
            uneBdd.seConnecter();
            String requete = "select * from train ; ";
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet desResultats = unStat.executeQuery(requete);
            while (desResultats.next())
            {
                int idTrain = desResultats.getInt("idtrain");
                int nbWagons = desResultats.getInt("nbwagons");
                String designation = desResultats.getString("designation");
                String dateCirculation = desResultats.getString("datecirculation");
                String typeTrain = desResultats.getString("typetrain");
                Train unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
                trains.add(unTrain);
            }
            desResultats.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur d'execution de la requete select.", e);
        }
        return trains;
         
    }
 
    public static void insertTrain(Train unTrain) {
         
        String requete ="insert into train values (null,'"+
                        unTrain.getDesignation()+"','"+unTrain.getDateCirculation()
                        + "',"+unTrain.getNbWagons()+",'"+unTrain.getTypeTrain()
                        +"');";
        try {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException(("Erreur d'execution de la requete :" + requete, e);
        }
    }
 
    public static void deleteTrain(int idTrain) {
        String requete = "DELETE FROM train WHERE idtrain="+idTrain+";";
        try
        {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException(("Erreur d'execution de la requete : "+requete, e);
        }
         
    }
 
    public static Train selectWhere(int idTrain) {
        Train unTrain = null;
         
        String requete = "select * from train where idtrain = " + idTrain + ";";
         
        try {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet leResultat = unStat.executeQuery(requete);
            if (leResultat.next())
            {
                int nbWagons = leResultat.getInt("nbwagons");
                String designation = leResultat.getString("designation");
                String dateCirculation = leResultat.getString("datecirculation");
                String typeTrain = leResultat.getString("typetrain");
                //instancier le train récupéré de la bdd
                unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
            }
            leResultat.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur d'execution de la requete : "+requete, e);
        }
         
        return unTrain ;
    }
 
    public static void updateTrain(Train unTrain) {
         
        String requete = "update train set nbwagons = "+unTrain.getNbWagons()
        +" , designation = '"+unTrain.getDesignation()
        +"' , datecirculation = '"+unTrain.getDateCirculation()
        +"' , typetrain = '"+unTrain.getTypeTrain()
        +"' where idtrain= " +unTrain.getIdTrain()+";";
        try
        {
            uneBdd.seConnecter();
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            unStat.execute(requete);
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur d'execution de la requete : "+requete, e);
        }
         
    }
 
    public static ArrayList<Train> selectAllTrains(String mot) {
         
        ArrayList<Train> trains = new ArrayList<Train>();
        String requete = "select * from train where designation like '%" + mot + "%'"
                + " or typetrain like '%" + mot + "%' " + " or datecirculation like '%" + mot + "%' ;" ;
        try {
            uneBdd.seConnecter();
         
            Statement unStat = uneBdd.getMaConnexion().createStatement();
            ResultSet desResultats = unStat.executeQuery(requete);
            while (desResultats.next())
            {
                int idTrain = desResultats.getInt("idtrain");
                int nbWagons = desResultats.getInt("nbwagons");
                String designation = desResultats.getString("designation");
                String dateCirculation = desResultats.getString("datecirculation");
                String typeTrain = desResultats.getString("typetrain");
                Train unTrain = new Train(idTrain, nbWagons, designation, dateCirculation, typeTrain);
                trains.add(unTrain);
            }
            desResultats.close();
            unStat.close();
            uneBdd.seDeconnecter();
        }
        catch(Exception e) {
            throw new IllegalStateException("Erreur d'execution de la requete : " + requete, e);
        }
        return trains;
    }
     
}
0