トランザクション(トランザクション)
すべてのステートメントが正常に実行された場合、トランザクションが(コミット)に提出することができます。ステートメントがエラーが発生した場合、トランザクションはロールバックされます。
トランザクションに複数のコマンドの理由は、データベース(データベースの整合性)の整合性を確保することです。
デフォルトで自動コミットモード、それがデータベースに送信された後に実行されるSQLコマンドで、データベース接続。注文が送信されると、それはロールバックすることができませんでした。
、自動コミットモードconn.setAutoCommit(false)をオフにする必要がトランザクションを使用する場合は、
文オブジェクトのステートメントSTAT = conn.createStatementを(作成);
その後、任意にexecuteUpdateメソッドstat.executeUpdate(Command1を)に数回呼ばれる。
stat.executeUpdate(command2の) ;
;すべてのコマンドを実行した後、conn.commitを()を提出するために呼び出されるメソッドをコミット
、コール・ロールバックが()ロールバックconn.rollback()が表示され、間違った場合は、
セーブポイント
セーブポイントを使用して、あなただけの時にロールバック操作にロールバックすることができますむしろ取引よりも、保存するためのポイントを開始。
文のSTAT = conn.createStatement(); //から始まるトランザクション、ロールバック()フォールバックトランザクション開始
stat.executeUpdateを(Command1)を、
セーブポイントsvpt = conn.setSavepoint(); //ポイントにフォールバックポイント、ロールバック(svpt)を保存し
、stat.executeUpdate(command2の)
...
conn.commit();
conn.releaseSavepoint(svptを); //ときポイントを保存する必要がないとき、それは解放しなければなりません
更新バッチを
同時に一連のコマンドをバッチ操作として収集して提出すること。
同じバッチ容器にINSERT、UPDATEすること、および操作を削除することができる、コマンドは、そのようなテーブルを作成し、テーブルを削除するように、データベース内に定義されてもよいです。しかし、バッチ処理でSELECTコマンドを追加すると例外がスローされます。
最初の文オブジェクトの作成に必要なバッチ処理
文STAT = conn.createStatementを();
次に、addBatchメソッド呼び出し:
文字列コマンド= "CREATE TABLEを...";
stat.addBatch(コマンド);
一方、(...){
コマンド=「INSERT ... INTO(...を)「値;
stat.addBatch(コマンド);
}
全体のバッチ更新を提出
INT []はstat.executeBatchは()=カウント ; // のレコードの数の配列返し
バッチ処理モードで誤差を補正する動作が、バッチは、単一のトランザクションとして実行されなければなりません。バッチ更新が失敗した場合は、バッチ操作の開始前の状態にロールバックする必要があります。
まず、自動送信モードをオフにして、バッチ操作を収集し、操作が実行され、コミットされ、最終的に初期自動モードコミット復元:
ブール= conn.getAutoCommit自動コミット();
(falseに)conn.setAutoCommit;
声明conn.getStatement STAT =();
...
// stat.addBatch(...)を呼び出すキープ;
...
stat.executeBatch();
conn.commit();
conn.setAutoCommit(自動コミット)。
データベース - セーブポイントトランザクション、バッチ更新
おすすめ
転載: www.cnblogs.com/it-mh/p/11205533.html
ランキング