JDBCを使用してOracleに接続しています。私はconnection.setAutoCommit(false)
とconnection.setAutoCommit(true)
をテストしましたが、結果は期待通りでした。
デフォルトでは、接続はautoCommit(true)
[間違っている場合は修正してください]のように機能するはずですが、connection.commit()
が呼び出されるまでレコードは挿入されません。デフォルトの動作に関するアドバイスはありますか?
String insert = "INSERT INTO MONITOR (number, name,value) VALUES (?,?,?)";
conn = connection; //connection details avoided
preparedStmtInsert = conn.prepareStatement(insert);
preparedStmtInsert.execute();
conn.commit();
接続が作成されると、自動コミットモードになります。つまり、個々のSQLステートメントはトランザクションとして扱われ、実行直後に自動的にコミットされます。 (より正確には、デフォルトでは、SQLステートメントは実行時ではなく、完了時にコミットされます。ステートメントは、すべての結果セットと更新カウントがただし、ほとんどすべての場合、ステートメントは実行直後に完了し、したがってコミットされます。
もう1つは、接続作成の詳細を省略しているため、私は推測しているだけです。フレームワークを使用している場合、またはデータソースまたは接続プールから接続を取得している場合、autocommit
がoff
それらのフレームワーク/プール/データソースによる-解決策は、デフォルト設定を決して信頼しないことです;-)