2

タイムスタンプ基準に基づいて行を削除するMySQLクエリを含むPreparedStatementがあります。同じ削除準備済みステートメントから削除された行の数を引き出すことは可能ですか、それとも最初に数を取得するために別のクエリを実行する必要がありますか?これは私が試したものですが、機能しませんでした。

        PreparedStatement pstmt = conn.prepareStatement(delete, PreparedStatement.RETURN_GENERATED_KEYS);
        pstmt.setString(1, keyword);
        pstmt.executeUpdate();
        ResultSet rs = pstmt.getGeneratedKeys();
        while (rs.next())
        {
            n = rs.getInt(1);
        } 
        rs.close();
        pstmt.close();
        conn.close();

申し訳ありませんが、私はそれを理解しました。int n = pstmt.executeUpdate();

4

1 に答える 1

4

それを行う1つの方法は、次の結果を信頼することですPreparedStatement#executeUpdate

(1)SQLデータ操作言語(DML)ステートメントの行数または(2)何も返さないSQLステートメントの場合は0を返します

別の方法はSELECT COUNT(*)、deleteステートメントを実行する前にステートメントを使用することです。結果に影響を与えないように、単一の接続/トランザクションで両方を実行できることに注意してください。

于 2013-03-04T01:39:29.557 に答える