21

我想使用 PreparedStatement 在表中插入一行。该表有 3 列(int、String、String)。问题是 int 列是 AUTO_INCREMENT,所以我想将该变量留空并让数据库完成这项工作(它是一个 id)。虽然还没有找到如何做到这一点!

这是一个 MySQL 数据库。

4

3 回答 3

18

只需在 sql 查询字符串中提供 String 条目,数据库就会填充 auto_increment 字段:

String insertSQL = "INSERT INTO MyTable (StrCol1, StrCol2) VALUES (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Val 1");
preparedStatement.setString(2, "Val 2");
preparedStatement.executeUpdate();
于 2012-08-04T00:29:53.700 回答
18

这比较简单,只需从列列表中省略自动增量列:

insert into mytbl(str1, str2) values (?, ?)

准备语句,设置两个参数,以非查询方式执行。

于 2012-08-04T00:30:16.377 回答
5

如果该字段已经是自动增量的,则仅填充其他两个字段就足够了。这里有一个例子

String sql = "INSERT INTO mytableName("
    + "fistStringColumnName,"
    + "secondStringColumnName) "
    +  "VALUES(?,?)";

try (PreparedStatement pstmt = connection.prepareStatement(sql)) {

    // Set the values
    pstmt.setString(1, "firstString");
    pstmt.setString(2, "secondString");

    // Insert 
    pstmt.executeUpdate();

} catch (SQLException e) {

} catch (FileNotFoundException e) {

}
于 2012-08-04T00:35:48.493 回答