1

我试图返回我更新的受影响行的 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();
    }

这里有什么建议吗?

4

2 回答 2

0

一种解决方法是创建一个存储过程并使用 CallableStatement 方法调用它。不要问我为什么这行得通,而不是相反。

于 2013-01-14T09:39:19.940 回答
0

在 SQL Server 2008 及更高版本中,您可以在 INSERT 或 UPDATE 语句中使用OUTPUT 子句。有关示例,请参见此答案。

于 2017-06-14T19:47:03.390 回答