我试图返回我更新的受影响行的ID。我想知道,为什么我没有得到一个ResultSet(只有主键可以),尽管我设置了Statement.RETURN_GENERATED_KEYS
?我使用最新的jTDS驱动程序1.3.0连接到Microsoft SQL Server。
try
{
PreparedStatement pst = SQL.getConnection().prepareStatement(qry, Statement.RETURN_GENERATED_KEYS);
pst.setString(1, someValue);
pst.setString(2, someOtherValue);
int affectedRows = pst.executeUpdate();
System.out.println(affectedRows); //to make sure whether the query updated anything
ResultSet rs = pst.getGeneratedKeys();
if (rs.next())
{
System.out.println(rs.getInt(1));
}
} catch (Exception e) {
e.printStacktTrace();
}
这里有什么建议吗?
答案 0 :(得分:0)
一种解决方法是创建存储过程并使用CallableStatement方法调用它。不要问我为什么会这样,而不是另一种方式。
答案 1 :(得分:0)
使用SQL Server 2008及更高版本,您可以在INSERT或UPDATE语句中使用OUTPUT clause。有关示例,请参阅this answer。