Problème Site en Java lié avec BDD (MySQL Xamppp + Eclipse)
Utilisateur anonyme
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
Pour le modèle :
Pour le contrôleur :
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:
- Problème Site en Java lié avec BDD (MySQL Xamppp + Eclipse)
- Eclipse java - Télécharger - Langages
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
5 réponses
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.
Merci.
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 :
Devient :
Remarque : surtout ne pas oublier le
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
, een 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.
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; } }
Il ne faut surtout pas oublier le
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.
, een 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.
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; } }
Ç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 :
Avec toi ça devient
Tu vois bien que le
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...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ...
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
Je reprends ton code de départ :
,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; } }
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 :
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 :