Erreur sur requête sql dans prog java
Nikko
-
Nikko -
Nikko -
Bonjour,
Je suis en train de créer un programme java avec une base de données MySql.
J'ai rédigé la fonction suivante :
public void sauver(Produit p) throws SQLException{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/projet", "root", "mysql");
Statement statement = conn.createStatement();
statement.executeQuery("INSERT INTO produit(code, modele, quantite, codetype, marque) VALUES('"+req.getParameter("code")+"', '"+req.getParameter("modele")+"', "+req.getParameter("quantite")+", '"+req.getParameter("codetype")+"', '"+req.getParameter("marque")+"');");
conn.close();
}
Et j'obtiens une erreur de type NullPointerException.
==>java.lang.NullPointerException
Outils.ADO.sauver(ADO.java:33)
Action.ActionCreationProduit.traiter(ActionCreationProduit.java:34)
Controleur.Controleur.doPost(Controleur.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
la ligne "Action.ActionCreationProduit.traiter(ActionCreationProduit.java:34)" fait référence à la ligne 34 suivante :
ado.sauver(p1);
et voici ma méthode doPost qui se trouve dans ma classe Controleur :
public void doPost(HttpServletRequest req, HttpServletResponse rep)throws ServletException, IOException{
String invocation = req.getServletPath();
String action = invocation.substring(1,invocation.lastIndexOf("."));
FabriqueAction fabrique =new FabriqueAction();
Action varAction = (Action) fabrique.ActionFabrique(action);
try {
String nextPage;
nextPage = varAction.traiter(req, rep);
req.getRequestDispatcher(nextPage).forward(req,rep);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();}
}
J'ai vérifié la syntaxe de ma requête SQL plusieurs fois, et je n'ai pas vu d'erreur. Je ne vois vraiment pas d'où celà peut venir. J'en fais donc appel à vous. Je planche sur cette pu**** d'erreur depuis ce matin 9h30... J'ai vraiment besoin d'aide si je ne veux pas devenir fou !
Par avance, mille mercis !
Nikko
PS : je viens de m'apercevoir d'un "Warning" ==>Classpath entry C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar will not be exported or published. Runtime ClassNotFoundExceptions may result.
Je suis en train de créer un programme java avec une base de données MySql.
J'ai rédigé la fonction suivante :
public void sauver(Produit p) throws SQLException{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/projet", "root", "mysql");
Statement statement = conn.createStatement();
statement.executeQuery("INSERT INTO produit(code, modele, quantite, codetype, marque) VALUES('"+req.getParameter("code")+"', '"+req.getParameter("modele")+"', "+req.getParameter("quantite")+", '"+req.getParameter("codetype")+"', '"+req.getParameter("marque")+"');");
conn.close();
}
Et j'obtiens une erreur de type NullPointerException.
==>java.lang.NullPointerException
Outils.ADO.sauver(ADO.java:33)
Action.ActionCreationProduit.traiter(ActionCreationProduit.java:34)
Controleur.Controleur.doPost(Controleur.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
la ligne "Action.ActionCreationProduit.traiter(ActionCreationProduit.java:34)" fait référence à la ligne 34 suivante :
ado.sauver(p1);
et voici ma méthode doPost qui se trouve dans ma classe Controleur :
public void doPost(HttpServletRequest req, HttpServletResponse rep)throws ServletException, IOException{
String invocation = req.getServletPath();
String action = invocation.substring(1,invocation.lastIndexOf("."));
FabriqueAction fabrique =new FabriqueAction();
Action varAction = (Action) fabrique.ActionFabrique(action);
try {
String nextPage;
nextPage = varAction.traiter(req, rep);
req.getRequestDispatcher(nextPage).forward(req,rep);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();}
}
J'ai vérifié la syntaxe de ma requête SQL plusieurs fois, et je n'ai pas vu d'erreur. Je ne vois vraiment pas d'où celà peut venir. J'en fais donc appel à vous. Je planche sur cette pu**** d'erreur depuis ce matin 9h30... J'ai vraiment besoin d'aide si je ne veux pas devenir fou !
Par avance, mille mercis !
Nikko
PS : je viens de m'apercevoir d'un "Warning" ==>Classpath entry C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar will not be exported or published. Runtime ClassNotFoundExceptions may result.
A voir également:
- Erreur sur requête sql dans prog java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
10 réponses
Bonjour,
et il y a quoi comme instruction à la ligne 33 de la classe ADO (Outils.ADO.sauver(ADO.java:33) ) ?
et il y a quoi comme instruction à la ligne 33 de la classe ADO (Outils.ADO.sauver(ADO.java:33) ) ?
A savoir : statement.executeQuery("INSERT INTO produit(code, modele, quantite, codetype, marque) VALUES('"+req.getParameter("code")+"', '"+req.getParameter("modele")+"', "+req.getParameter("quantite")+", '"+req.getParameter("codetype")+"', '"+req.getParameter("marque")+"');");
Ne penses-tu pas que le NullPointerExceptions pourrait venir du Warning que j'ai mis en PS dans mon premier post ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le warning je pense pas que ça vienne de là. ça indique juste que tu ne pourras pas exporter le servlet-api.jar quand tu créeras ton war (ou ton jar ou ton...). Il ne sera pas dedans.
Essaye de passer en mode debug pour voir ce qui est null dans ton code.
Mais il semble, si c'est à la ligne 33, que le problème vienne soit du "statement" qui est null, ça serait bizarre, conn devrait être null avant...OU ALORS c'est ton req qui est null...
Tu le récupères où le req dans la méthode sauver? C'est une variable globale? J'espère pas...Faudrait que tu passes le HttpServletRequest à ta méthode "sauver" ainsi que le HttpServletResponse
Essaye de passer en mode debug pour voir ce qui est null dans ton code.
Mais il semble, si c'est à la ligne 33, que le problème vienne soit du "statement" qui est null, ça serait bizarre, conn devrait être null avant...OU ALORS c'est ton req qui est null...
Tu le récupères où le req dans la méthode sauver? C'est une variable globale? J'espère pas...Faudrait que tu passes le HttpServletRequest à ta méthode "sauver" ainsi que le HttpServletResponse
Je ne sais pas utiliser le mode debug. Je débute dans java.
Ca doit sûrement être le req qui est null puisqu'avant de poster, j'avais une erreur qui portait sur la ligne suivante :
Statement statement = conn.createStatement();
J'ai donc pensé que le conn était null donc je lui ai attribué une valeur via la ligne :
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/projet", "root", "mysql");
Le req de la méthode sauver est une variable private.
donc d'apèrs toi, j'ajoute en paramètre à ma méthode sauver les HttpServletRequest/HttpServletResponse en plus du produit ?
Ca doit sûrement être le req qui est null puisqu'avant de poster, j'avais une erreur qui portait sur la ligne suivante :
Statement statement = conn.createStatement();
J'ai donc pensé que le conn était null donc je lui ai attribué une valeur via la ligne :
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/projet", "root", "mysql");
Le req de la méthode sauver est une variable private.
donc d'apèrs toi, j'ajoute en paramètre à ma méthode sauver les HttpServletRequest/HttpServletResponse en plus du produit ?
"donc d'apèrs toi, j'ajoute en paramètre à ma méthode sauver les HttpServletRequest/HttpServletResponse en plus du produit ?"
-> Oui, ou alors tu passes en paramètre : le code, le modele, la quantite, le codetype et la marque.
Au choix, je sais pas lequel est le mieux
-> Oui, ou alors tu passes en paramètre : le code, le modele, la quantite, le codetype et la marque.
Au choix, je sais pas lequel est le mieux
En ajoutant le HttpServletRequest/HttpServletResponse à ma fonction sauver, il ne met mets plus d'erreur quand je créé un produit via mes pages JSP. Mais il ne m'affiche pas la page "résultat" qui est censé s'afficher. Au lieu de celà, il me met une page blanche.
Ca n'a pas d'importance que mon servlet-api.jar ne soit pas exporter dans mon war quand j'exporte et réimporte le tout dans Apache Tomcat ?
Ca n'a pas d'importance que mon servlet-api.jar ne soit pas exporter dans mon war quand j'exporte et réimporte le tout dans Apache Tomcat ?
Si, c'est peut-être le problème...mais là il faudrait quelqu'un de plus compétent que moi.
Il semblerait que ce soit à Apache plutôt de spécifier le jar :
Source : https://www.developpez.net/forums/d420264/java/developpement-web-java/servlets-jsp/classpath-entry-will-not-be-exported-or-published/
Il semblerait que ce soit à Apache plutôt de spécifier le jar :
Source : https://www.developpez.net/forums/d420264/java/developpement-web-java/servlets-jsp/classpath-entry-will-not-be-exported-or-published/