插入mysql时,列数与第1行的值计数不匹配

时间:2017-07-17 10:41:38

标签: java mysql

我试图在表名,电子邮件和密码中插入三个值(我知道我没有这个哈希,我只是测试它以确定它是否先工作)。它告诉我列数不匹配,但列名和列数匹配,我不知道问题可能是什么。

这是MainActivity

Host github.com
  IdentityFile ~/.ssh/path_to_key
  IdentitiesOnly yes

phpmyadmin中数据库中的表: enter image description here

错误: enter image description here

2 个答案:

答案 0 :(得分:2)

该行:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+email+password+"')";

实际应该是:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+"','"+email+"','"+password+"')";

当您实际想要插入三个单独的值时,您只插入了一个值,即name + email + password值的串联。

当您编写“插入INTO test1(名称,电子邮件,密码)”时,这意味着您要将3个值插入“test1”,“(名称,电子邮件,密码)指定的每个列都有一个值”。但是,因为您连接了名称+电子邮件+密码,所以您只插入一个值(连接的结果)而不是三个单独的值。打印出“查询”字符串,您将很快掌握其中的差异。

答案 1 :(得分:1)

您的查询会导致逗号错误(",")并且空格会尝试上面的代码

 String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";

现在尝试使用预处理语句尝试上面的代码

 String query= "Insert into table (name,email,password) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, name);
   st.setString(2, email); 
   st.setString(3, password);
相关问题