Java 是否从update语句返回结果集?
我试图返回我更新的受影响行的id。我想知道,即使我设置了Java 是否从update语句返回结果集?,java,sql-server,jdbc,resultset,jtds,Java,Sql Server,Jdbc,Resultset,Jtds,我试图返回我更新的受影响行的id。我想知道,即使我设置了语句,为什么我不能从中得到一个结果集(只有主键是可以的)。返回生成的\u键?我使用最新的jTDS驱动程序1.3.0连接到Microsoft SQL Server try { PreparedStatement pst = SQL.getConnection().prepareStatement(qry, Statement.RETURN_GENERATED_KEYS); pst.setStr
语句,为什么我不能从中得到一个结果集(只有主键是可以的)。返回生成的\u键
?我使用最新的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();
}
有什么建议吗 一种解决方法是创建存储过程并使用CallableStatement方法调用它。不要问我为什么这样做有效,而不是相反。对于SQL Server 2008及更高版本,您可以在INSERT或UPDATE语句中使用。请参阅以获取示例。什么是查询?正在生成哪些键?是您试图检索自动递增列的键吗?这是错误吗<代码>rs空?否
rs.next()
<代码>rs.getInt(1)失败?如果您需要任何有意义的帮助,请更加具体。@SJuan76:当谈到语句if(rs.next())
时,它会跳过。。没有错误,只是一个似乎是空的结果集。@GangnamStyleOverflower:是的,但它甚至没有那么远。.我正在使用CallableStatement.executeUpdate()调用一个存储过程,使用CallableStatement.executeUpdate()
,但我仍然收到这个错误。我使用循环从同一位置调用多个存储过程。但是这个问题只发生在一个存储过程中。请告知。