1

更新した影響を受ける行のIDを返そうとしました。設定しても、なぜこれからResultSetが戻らないのか(主キーのみで問題ない)、疑問に思っていStatement.RETURN_GENERATED_KEYSます。最新のjTDSドライバー1.3.0を使用してMicrosoftSQLServerに接続します。

    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

回避策の1つは、ストアドプロシージャを作成し、CallableStatementメソッドを使用して呼び出すことです。なぜこれが機能するのか、そしてその逆ではないのか、私に聞かないでください。

于 2013-01-14T09:39:19.940 に答える
0

SQL Server 2008以降では、INSERTまたはUPDATEステートメントでOUTPUT句を使用できます。例については、この回答を参照してください。

于 2017-06-14T19:47:03.390 に答える