Probleme de statement et d ecriture dans ma base et... [Résolu]

Signaler
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012
-
cs_diabohit
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012
-
slt tout le monde!



voici ma troisieme demande en esperant que quelqu'un puisse resoudre mon probleme  




il s agit de lire et ecrire dans une base de donnée mysql ap artir d'une servlet!

*pour ecrire dans ma base de donnée j ai fais cette class Client et la servlet sinscrire; dont le code est respectivement cela:


____________________________________________________________________
package metier;



import java.sql.*;
import java.io.*;
import java.util.*;
import sun.applet.Main;
public class client
{
private Connection c;
private Statement stmt;
private ResultSet rs ;
private String query;
public client() throws ClassNotFoundException, SQLException
{
 Class.forName("com.mysql.jdbc.Driver");
 c = DriverManager.getConnection("jdbc:mysql://localhost:3306/rno","root","");
 stmt = c.createStatement(); }



public void sinscrire(String mr_mde, String nom, String prenom, String login, String password) throws SQLException{
    query = "insert into login_password values('"+mr_mde+"','"+nom+"','"+prenom+"','"+login+"','"+password+"')";
   

stmt.executeUpdate(query);
    stmt.close();
}
public void liste() throws SQLException{
    ResultSet rs =  stmt.executeQuery("select * from login_password");
    while(rs.next()){
    System.out.println(rs.getString(1));}
}




public static void main(String args[])
{try{
client c = new client();
c.liste();
c.sinscrire("mr_mde","nom","prenom","login","password");
 System.out.println("ok");
 c.liste();
 }
 catch(Exception e){e.printStackTrace();}
}
}
_____________________________________________________________________

package servlet;



import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
import metier.* ;
public class sinscrire extends HttpServlet {
public void doGet( HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res. setContentType("text/html");
PrintWriter out = res. getWriter();
String mr_mde = req. getParameter("mr_mde");
String nom = req. getParameter("nom");
String prenom = req. getParameter("prenom");
String login = req. getParameter("login");
String password = req. getParameter("password");
System.out.println(nom+prenom);
try{
client c = new client();
c.sinscrire(mr_mde,nom,prenom,login,password);
out. println("< HTML>< BODY>");
out. println("< h1>"+mr_mde+" "+nom+" "+prenom+" est inscrit!</h1>");
out. println("</HTML>");}



catch(Exception e){
    out. println("< HTML>< BODY>");
out. println("< h1> Désolé "+mr_mde+" "+nom+" "+prenom+", nous avons un problème dans le système d'inscription.</h1>");
out. println("</HTML>");
 e.printStackTrace();
}
}}
_________________________________________________________________

le premier code me donne une erreur dans la ligne en rouge

*ma question est est-ce la maniere qu on doit ecrire le Statement stm?
*ma deuxieme question est: si pour ecrire des donnée dans ma base j'utilise cette fonction:
--------------------------------------------------

public void sinscrire(String mr_mde, String nom, String prenom, String login, String password) throws SQLException{
    query = "insert into login_password values('"+mr_mde+"','"+nom+"','"+prenom+"','"+login+"','"+password+"')";
    stmt.executeUpdate(query);
    stmt.close();
}

--------------------------------------------------
alrs comment puis-je faire pour lire des donnée de ma base??? et les comparer avec des autres varibles dans mon code???

6 réponses

Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
16
Salut,

bein l'ami ton code semble correct, peut être que tu te trompes à propos de l'un des attributs dans ta requête, ou dans le nom de la table : je dis peut être car tu n'as pas spécifié l'exception que tu reçois..

essayes par exemple d'exécuter la même requête via mySQL..

bonne chance..
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012

voici la ligne eronée dans la class client (la ligne colorée en rouge)

--------------------------------------------------------------------------
package metier;import java.sql.*;
import java.io.*;
import java.util.*;
import sun.applet.Main;
public class client
{
private Connection c;
private Statement stmt;
private ResultSet rs ;
private String query;
public client() throws ClassNotFoundException, SQLException
{
 Class.forName("com.mysql.jdbc.Driver");
 c = DriverManager.getConnection("jdbc:mysql://localhost:3306/rno","root","");
 stmt = c.createStatement(); }

public void sinscrire(String mr_mde, String nom, String prenom, String login, String password) throws SQLException{
    query = "insert into login_password values('"+mr_mde+"','"+nom+"','"+prenom+"','"+login+"','"+password+"')";
    stmt.executeUpdate(query);
    stmt.close();
}
public void liste() throws SQLException{
    ResultSet rs =  stmt.executeQuery("select * from login_password");
    while(rs.next()){
    System.out.println(rs.getString(1));}
}

public static void main(String args[])
{try{
client c = new client();
c.liste();
c.sinscrire("mr_mde","nom","prenom","login","password");
 System.out.println("ok");
 c.liste();
 }
 catch(Exception e){e.printStackTrace();}
}
}
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012

merci pour ta reponse mon ami  

mais j ai dit que l erreur est dans la ligne suivante:

stmt.executeUpdate(query);

est-ce que cette expression est correcte?  je ne crois pas!
aidez moi SVP..........
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
16
Re-salut,

ce que j'ai demandé est l'exception que ton compilateur renvoi : l'exception levée suite à l'exécution de ton code..

as-tu exécuté la même requête dans mySQL ?
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012

suite a l execution de mon code Netbeans renvoi moi ca:

___________________________________________________________________
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
compile-single:
run-main:
1
java.sql.SQLException: Column count doesn't match value count at row 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1605)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1524)
        at metier.client.sinscrire(client.java:21)
        at metier.client.main(client.java:33)
BUILD SUCCESSFUL (total time: 1 second)
________________________________________________________________

j ai exeuté la meme requete avec mysql, et ca marche bien
Messages postés
75
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
2 février 2012

ca y est mon ami!
j ai verifié la raquete MySql;  c'etait une faute dans la requete Mysql comme tu m'a dit!
merci enormement!!!!