Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否从update语句返回结果集?_Java_Sql Server_Jdbc_Resultset_Jtds - Fatal编程技术网

Java 是否从update语句返回结果集?

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

我试图返回我更新的受影响行的id。我想知道,即使我设置了
语句,为什么我不能从中得到一个结果集(只有主键是可以的)。返回生成的\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()
,但我仍然收到这个错误。我使用循环从同一位置调用多个存储过程。但是这个问题只发生在一个存储过程中。请告知。