2017-09-20 1 views
-2

Je vais avoir un peu de mal avec mes codes car il affiche cette erreurjava.sql.SQLSyntaxErrorException?

« java.sql.SQLSyntaxErrorException: Le nombre de valeurs assignées n'est pas le même que le nombre de colonnes spécifiées ou sous-entendus. »

J'ai lu des problèmes similaires, mais toujours confus sur la façon dont le mien affiche toujours l'erreur. Aussi j'ai essayé de mettre "," comme ceci entre les valeurs mais toujours pas bon. Et quelle est la déclaration préparée?

//CONNECTION 
    Connection conn = null; 
    try{ 
    conn = 
    DriverManager.getConnection("jdbc:derby://localhost:1527/MetroEventsDB", 
    "root", "root"); 
    System.out.println("Connected"); 

    //Insertion 
    Statement stmt = (Statement) conn.createStatement(); 
    stmt.execute("INSERT INTO Users(UserID, Password, FirstName, LastName, Gender, Birthdate) VALUES('"+txtUserID.getText()+txtPassword.getText()+txtFirstName.getText()+txtLastName.getText()+gender+txtBirthdate.getText()+"')"); 
    }catch(SQLException e){ 
      System.err.println(e); 
      } 
+1

Apprenez à utiliser correctement un 'PreparedStatement', par ex. en lisant le [tutoriel JDBC] (http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) –

+0

Oups mes mauvais après avoir regardé si longtemps que j'ai vu l'im manquant la seule qoutation .. Donc ça devrait ressembler à ça. VALUES ('"+ txtUserID.getText() +"', "" + txtPassword.getText() – justanything

+0

Non, il ne devrait pas s'agir d'un 'PreparedStatement' avec des espaces réservés. Vous ne devriez pas ** concaténer entrée de l'utilisateur dans les requêtes SQL –

Répondre

1

Vous avez une erreur de syntaxe dans stmt.execute. La syntaxe correcte est:

stmt.execute("INSERT INTO Users(UserID, Password, FirstName, LastName, Gender, Birthdate) VALUES('"+txtUserID.getText()+"','"+txtPassword.getText()+"','"+txtFirstName.getText()+"','"+txtLastName.getText()+"','"+gender+"','"+txtBirthdate.getText()+"')"); 
+0

oui !! .... ahaha j'ai raté ce qoutation unique ahha ... merci de répondre – justanything