Двойная запись для основного ключа в MySQL вставки - PullRequest
1 голос
/ 27 января 2012

Я получаю тревожные ошибки из-за проблем с первичными ключами, и вставка значений в табличную часть моего кода находится здесь ....

В таблице у меня есть 3 столбца userName, userPwd и userId (первичный ключ auto_incremented)

    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 Ответ

1 голос
/ 27 января 2012

Не следует вручную вставлять значения в поле автоинкремента.Просто полностью исключите его из запроса вставки.

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

правильное автоматически увеличенное значение будет вставлено автоматически.


Добавлено после более подробной информации из OP:

если MySQL жалуется, что поле 'userId' не имеет значения по умолчанию, то то, что вы сказали нам о своей таблице, неверно, а столбец userId фактически не определен как автоинкремент

...