插入行后从光标获取生成的ID

时间:2014-07-18 16:52:46

标签: java sql jdbc mssql-jdbc

我已经看到this(和类似的)问题,解释了如何插入和获取生成的ID。不幸的是,到目前为止我找到的解决方案都没有在我当前的设置中工作。

我的代码目前如下:

rs.moveToInsertRow();
rs.updateObject(...)
rs.updateObject(...)
rs.updateObject(...)
...
rs.insertRow();

所有插入的字段都不包含ID。 ID由数据库生成。在rs.insertRow()之后;我想获得该行的ID。

插入后

使用rs.getObject("ID");给我

com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current row.

有没有办法使这个工作原样,或者我是否必须重做这个以删除游标并使用带有返回键的INSERT语句?

1 个答案:

答案 0 :(得分:1)

以下代码似乎对我有用(在目前为止我观察过的所有情况):

rs.moveToInsertRow();
rs.updateObject(...)
rs.updateObject(...)
rs.updateObject(...)
...
rs.insertRow();

rs.last();
return rs.getObject("ID");

这适用于SQL Server 2012,使用自动增量1.

使用其他驱动程序或配置可能无法正常工作。