Java 主钥匙的重复条目-登记表

Java 主钥匙的重复条目-登记表,java,mysql,Java,Mysql,我有一个使用jsp、servlet和mysql的简单注册表单。但是,我只能注册一个用户,然后我得到了这个错误: 严重:消息:键“PRIMARY”的重复条目“1”。当然,当我从数据库中删除那个用户时,我可以再次创建,但只能创建一个用户。此外,我在该列中添加了自动增量: 创建表用户(id int(3)非空自动增量… 这也是我在db中插入的方法: public class UserDAO { public int registerUser(User User) throws ClassNotFoun

我有一个使用jsp、servlet和mysql的简单注册表单。但是,我只能注册一个用户,然后我得到了这个错误:

严重:消息:键“PRIMARY”的重复条目“1”
。当然,当我从数据库中删除那个用户时,我可以再次创建,但只能创建一个用户。此外,我在该列中添加了自动增量:

创建表用户(id int(3)非空自动增量…

这也是我在db中插入的方法:

public class UserDAO {

public int registerUser(User User) throws ClassNotFoundException, SQLException {
    String INSERT_USERS_SQL = "INSERT INTO user"
            + "  (id, firstName, lastName, username, password, email) VALUES "
            + " (?, ?, ?, ?, ?, ?)";

    int result = 0;

    Class.forName("com.mysql.jdbc.Driver");

    try (Connection connection = DriverManager
            .getConnection("jdbc:mysql://localhost:3306/cs230projekat","root","");
            // Step 2:Create a statement using connection object
            PreparedStatement preparedStatement = connection.prepareStatement(INSERT_USERS_SQL)) {
        preparedStatement.setInt(1, 1);
        preparedStatement.setString(2, User.getFirstName());
        preparedStatement.setString(3, User.getLastName());
        preparedStatement.setString(4, User.getUsername());
        preparedStatement.setString(5, User.getPassword());
        preparedStatement.setString(6, User.getEmail());

        System.out.println(preparedStatement);
        // Step 3: Execute the query or update query
        result = preparedStatement.executeUpdate();

    } catch (SQLException e) {
        // process sql exception
        printSQLException(e);
    }
    return result;
}

谢谢。

从您的代码看,您似乎总是在为id列插入值1,请尝试正确实现自动生成。有关更多帮助,您可以查看类似的您总是通过
preparedStatement.setInt(1,1)将
id
列的值设置为1
。既然您说在
id
列上有一个自动递增,那么从SQL中删除
id
,删除前面提到的行,并调整所有其他
setString()的列索引(第一个参数)
方法调用。

使用自动递增设置,您不必在sql insert语句中指定“id”列


以下是MySQL网站上关于自动增量的一些信息:

是什么让你认为
1
对于你所有的用户来说都是一个很好的
id
值?但是我没有用户id如果你有“自动增量”,你就不需要id了为该字段设置。使用该功能集,该表中的任何插入都不需要显式设置。MySQL DB将自动将id递增到下一个值,因此该功能名为“自动递增”。自动递增的目的是为您生成一个。在MySQL中,您可以通过调用函数LAST_insert_id()来检索它。是的,它现在可以工作,但我在数据库中没有主键。我希望在数据库中有一个ID,主键将在每次新用户注册时增加。