# JDBC - setAutoCommit(false) hat keine wirkung?



## jan10101 (14. Mai 2008)

Hallo,

wenn ich die Connection mit "setAutoCommit(false)" auf false setze dürften doch nur sql statements an die Datenbank geschickt werden, wenn ich con.commit() aufrufe oder?

Leider funktioniert das nicht. Die Statements werden bei mir trozdem an die Datenbank geschickt obwohl ich kein con.commit() in meinem Programm habe sondern ein con.rollback() was ja eigentlich dann nichts senden sollte oder hab ich das was falsch verstanden?

Kann mir jemand weiterhelfen? Hier noch das Beispielprogramm:


```
import java.sql.*;
public class SavepointTest {
 public static void main(String[] args){

  try{
   String url = "jdbc:mysql://localhost/oodm";

   Connection con = DriverManager.getConnection(url,"root", "");

   Statement statement = con.createStatement();
   con.setAutoCommit(false);

   statement.executeUpdate("UPDATE DepotKto SET ktoStand = 600 WHERE ktoNr = 30636");


   statement.executeUpdate("UPDATE DepotKto SET ktoStand = 600 WHERE ktoNr = 224222");


   con.rollback();

   statement.close();
   con.close();
  }catch(Exception e){
   e.getStackTrace();
  }

 }
}
```


----------



## Guest (15. Mai 2008)

Die Update Statements werden zwar ausgeführt, aber wenn kein commit erfolgt werden die entsprechenden
Änderungen auf der Datenbank verworfen. Dies geschieht entweder durch ein Rollback oder eine Timeout
der Transaktion (z.B. wenn dein Programm abstürzt oder weder commit noch rollback aufruft)


----------



## ARadauer (15. Mai 2008)

was hast du für eine datenbank, bzw welchen tabellen typ?
nicht jede db unterstützt transaktionen.
zb eine mysql myisam tabelle unterstützt sie nicht


----------

