Liefert getAutoCommit() den Wert false,
muss man die Steuerung der Transaktionen explizit im Quellcode durchführen.
Hierfür stellt das Interface Connection
folgende Methoden zur Verfügung:
- commit()
Beendet die aktuelle Transaktion und schreibt die durchgeführten Änderungen in der Datenbank fest.
Es wird also explizit ein COMMIT in der Datenbank ausgeführt.
Nach dem Aufruf von commit() wird außerdem automatisch eine neue Transaktion begonnen.
- rollback()
Wird für die Durchführung eines ROLLBACK in der Datenbank benutzt. Es
werden somit alle Änderungen verworfen, die seit dem
letzten Aufruf von commit() gemacht wurden.
Folgender Codeausschnitt zeigt ein Beispiel für die Verwendung von commit() und
rollback():
Connection con =
DriverManager.getConnection(url, user, password);
// Auto-Commit deaktivieren
con.setAutoCommit(false);
Statement stmt = con.createStatement();
...
try {
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
stmt.executeUpdate(sql3);
// Wenn keine Fehler aufgetreten sind,
// Änderungen festschreiben
con.commit();
} catch(SQLException e) {
// Beim Auftreten einer Exception Rollback durchführen
con.rollback();
}
...
Nach dem Deaktivieren des Auto-Commit werden mehrere SQL-Operationen in
einer try/catch-Klausel
durchgeführt. Tritt kein Fehler auf, wird nach der letzten Anweisung commit() aufgerufen.
Beim Auslösen einer SQLException wird commit() übersprungen und
in den catch-Block verzweigt.
Dort wird durch Aufruf von rollback() ein ROLLBACK durchgeführt.