Connection conn = null;
PreparedStatement pst = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/chatdata", "admin", "int*M=9167757203");
pst = conn.prepareStatement("insert into user values (?, ?)");
} catch (Exception e) {
}
String password;
String userName;
try {
BufferedReader kin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter Username :: ");
userName = kin.readLine();
System.out.println("Enter Password :: ");
password = kin.readLine();
pst.setString(1, userName);
pst.setString(2, password);
pst.execute();
} catch (Exception e) {
System.out.println(e);
}
此代码显示错误:
“java.sql.SQLException:列数与行的值计数不匹配 1"
虽然我的表有三个列条目uid是AUTO_INCREMENT
,用户名和密码是我必须通过的两个字符串,所以如果有人能找到答案请帮助。
答案 0 :(得分:2)
这是MySQL手册中关于使用没有列列表的insert的说法:
如果没有为INSERT ... VALUES或指定列名列表 INSERT ... SELECT,表中每列的值必须是 由VALUES列表或SELECT语句提供。
因此,即使uid
具有autoincrement
标志,您仍需要在insert语句中指定您呈现值的列。作为解决方案,您只需修改insert语句:
insert into user (username, password) values (?, ?)
(我认为username
和password
是列的名称。)
您可以阅读有关使用自动增量here
的更多信息答案 1 :(得分:0)
user
(username
,password
)值('xyz','abc');
其中xyz和abc之类的字符串用单引号表示......