JDBC如何在自增字段中插入记录

Posted

技术标签:

【中文标题】JDBC如何在自增字段中插入记录【英文标题】:JDBC how to insert record in auto-increment field 【发布时间】:2013-04-25 16:15:36 【问题描述】:

我正在使用 Postgresql 和 mysql 的自动增量等效序列。我的表结构如下:

id | name | description

如何插入使用结果集的新记录(实际上是 CachedRowSet 但类似)?我试过这个:

rs.moveToInsertRow();
rs.updateString("name", "x");
rs.updateString("description", "xxx");
rs.insertRow();
rs.moveToCurrentRow();

但它不起作用。我得到一个例外。这是因为我没有指定 id 列值。但是我该如何指定呢?没有任何选项可以让 JDBC 自动插入它吗?或者在插入记录之前检索生成的键的某种方式?

【问题讨论】:

【参考方案1】:

要创建可更新的结果集,您必须在选择列表中指定主键:

    // Create a statement that will return updatable result sets
    Statement stmt = connection.createStatement(
                ResultSet.TYPE_SCROLL_SENSITIVE, 
                ResultSet.CONCUR_UPDATABLE);

    //Primary key / auto-increment 'id' must be specified 
    //so that the result set is updatable
    ResultSet rs = stmt.executeQuery(
                "SELECT id, name, description FROM yourtable");

【讨论】:

但我只想使用 CachedRowSet 类。 ResultSet 将一直保持连接活动,这将浪费资源。请给我使用 CachedRowSet 的解决方案。

以上是关于JDBC如何在自增字段中插入记录的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2000中如何设置自增主键?

oracle数据库,表中有id(自增字段,主键), insert 语句插入一条记录后要求,返回当前插入记录的id値。

数据库MYSQL中,如果有个字段是自增型,如何写插入语句?

mysql 自增插入

SQL 一个表只有一个自增的主键字段,如何插入

SQL——AUTO INCREMENT(字段自增)