我用for循环在MySQL数据库中进行一些插入。

我对自动增量有问题,因为第一次插入后,我获得了com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException。

这里的代码:

for (int i=0; i<numKeys; i++) {
try {
   stm1 = this.db_connection.prepareStatement("INSERT INTO mytable (Cod, Prop, Field, Value) VALUES (?,?,?,?)");
   stm1.setInt(1, Statement.RETURN_GENERATED_KEYS);
   stm1.setInt(2, 0);
   stm1.setString(3, aname);
   stm1.setString(4, avalue);
       stm1.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}


鳕鱼是一个自动递增字段。

最佳答案

如果它是一个自动递增的字段,则没有理由将其作为参数传递,只是不要将其包括在Insert语句中。

stm1 = this.db_connection.prepareStatement("INSERT INTO mytable (Prop, Field, Value) VALUES (?,?,?)");


并在下面删除适当的setInt方法。

09-04 09:14