从update语句返回ResultSet?

时间:2012-11-15 08:13:36

标签: java sql-server jdbc resultset jtds

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

这里有什么建议吗?

2 个答案:

答案 0 :(得分:0)

一种解决方法是创建存储过程并使用CallableStatement方法调用它。不要问我为什么会这样,而不是另一种方式。

答案 1 :(得分:0)

使用SQL Server 2008及更高版本,您可以在INSERT或UPDATE语句中使用OUTPUT clause。有关示例,请参阅this answer