0

次のJavaコードフラグメントがあるとします(レガシーアプリに埋め込まれているようなもの)

...
try {
    con.setAutoCommit(false);
    updateSales = con.prepareStatement(updateString);
    updateTotal = con.prepareStatement(updateStatement);

    updateSales.setInt(1, e.getValue().intValue());
    updateSales.setString(2, e.getKey());
    updateSales.executeUpdate();
    updateTotal.setInt(1, e.getValue().intValue());
    updateTotal.setString(2, e.getKey());
    updateTotal.executeUpdate();
    con.commit();
} catch (SQLException e ) {
...

これがSQLServer2005データベース(ms 2005ドライバーを使用)に接続していると仮定すると、con.commitがトランザクションをコミットしない理由はありますか?

4

1 に答える 1

1
  1. あなたは私たちにSQLステートメントを見せていないので、言うのは難しいです。データベースがレコードを更新/挿入/削除できないように、奇妙な状態になっている可能性がありますか?

  2. の結果を確認してくださいexecuteUpade()。レコードが変更された場合は、1つ以上のレコードが表示されます。

  3. たぶん、そのような操作をブロックするTRIGGERがデータベースにあります。updateStringハードコードされた値を使用して、一部のSQLエディターからデータベースを変更することは可能ですか?

于 2012-08-17T11:21:35.747 に答える