由于主键上的问题以及我的代码的表格部分插入值,我遇到了令人不安的错误....
在表格中我有3列userName,userPwd和userId(auto_incremented primary key)
public boolean addUserBean(UserBean ub)
{
Connection conn = null;
PreparedStatement prepar = null;
boolean flag = false;
String sql = "insert into admin values(?,?)";
if (hasUser(ub.getUserName()))
{
return false;
}
try
{
prepar = conn.prepareStatement(sql,prepar.RETURN_GENERATED_KEYS);
prepar.setString(1, ub.getUserName());
prepar.setString(2, ub.getUserPwd());
int result = prepar.executeUpdate();
if (result > 0)
{
flag = true;
}
else
{
flag = false;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}finally{
if (prepar != null) {
try {
prepar.close();
} catch (SQLException logOrIgnore) {
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException logOrIgnore) {
}
}
}
return flag;
}
答案 0 :(得分:1)
您不应手动将值插入自动增量字段。只需将其从插入查询中删除即可。
String sql = "insert into admin(userName, userPwd) values(?,?)";
将自动输入正确的自动增量值。
在OP的更多细节后添加:
如果MySQL抱怨Field'userId'没有默认值,那么你告诉我们你的表是错误的,而且userId列实际上并没有被定义为自动增量