mysql插入中键主要的重复条目

时间:2012-01-27 10:41:45

标签: mysql jdbc prepared-statement

由于主键上的问题以及我的代码的表格部分插入值,我遇到了令人不安的错误....

在表格中我有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;
        }

1 个答案:

答案 0 :(得分:1)

您不应手动将值插入自动增量字段。只需将其从插入查询中删除即可。

String sql = "insert into admin(userName, userPwd) values(?,?)";

将自动输入正确的自动增量值。


在OP的更多细节后添加:

如果MySQL抱怨Field'userId'没有默认值,那么你告诉我们你的表是错误的,而且userId列实际上并没有被定义为自动增量