SQL java如何获取自增主键的值。

5

我在我的表格中有一个自动递增的主键属性。我想知道使用`statement.executeUpdate()`插入行时所分配给该属性的值。如何以最佳方式实现?


针对哪个数据库?你可以在Oracle/DB2(以及可能的Postgres)中使用RETURNING子句;在MySQL中使用LAST_INSERT_ID;在SQL Server中使用@SCOPE_IDENTITY... - OMG Ponies
@OMGPonies:JDBC 抽象了数据库实现这一过程的方式(当数据库支持时)。 - Pascal Thivent
1个回答

12

使用 Statement#getGeneratedKeys()Statement#executeUpdate(String, int)(这是一个JDBC 3.0的功能,你的数据库必须支持JDBC 3.0)。

以下是返回TABLE1中自动生成列值的ResultSet示例:

Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("INSERT INTO TABLE1 (C11, C12) VALUES (1,1)", Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();

与此相关的内容。http://bugs.mysql.com/bug.php?id=18409,但即使如此也无法解决问题。 - Rohit Banga
我的列具有 int(11) 数据类型。我正在使用 MySQL。 - Rohit Banga
1
是的,我做了。但我仍然得到一个异常。 我在这里发布了一个新问题。 https://dev59.com/nE3Sa4cB1Zd3GeqPytqA - Rohit Banga
我已经放置了堆栈跟踪以及表中列的数据类型。请参见上面的链接。 - Rohit Banga
无法工作,Oracle。 - Jafar Ali
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接