# Sqlite cannot commit



## Fohnbit (18. Jul 2015)

Hallo!

ich schreibe zyklisch in eine Sqlite Datenbank mit:

```
try {
       con.setAutoCommit(false);

       PreparedStatement[] statement = new PreparedStatement[data.size()];
       int index = 0;
       for (Data dat : data) {

         statement[index] = con
             .prepareStatement("INSERT INTO Quarter (TIMESTAMP,UID,VALUE,VALUE_MIN,VALUE_MAX) VALUES(?,?,?,?,?)");
         statement[index].setLong(1, dat.timeStamp);
         statement[index].setString(2, objectUID.toString());
         statement[index].setDouble(3, dat.value);
         statement[index].setDouble(4, dat.value_min);
         statement[index].setDouble(5, dat.value_max);
         ++index;
       }

       for (int i = 0; i < data.size(); i++) {
         statement[i].executeUpdate();
       }
       con.commit();
     } catch (SQLException e) {
       e.printStackTrace();
     }
```

Manchmal bekomme ich bei "con.commit();" den Fehler/Hinweis:
java.sql.SQLException: cannot commit - no transaction is active

Scheinbar wird alles geschrieben, aber ich kann mir nie ganz sicher sein.
Habe den Fehler gegoogelt und daher zuerst alle Statements erzeugt, diese dann danach ausgeführt und am Ende das .commit().

Kann sein das ein anderer Thread in die DB schreibt oder wo ist das Problem?

Danke![/code]


----------



## Tom299 (20. Jul 2015)

Du machst dein commit immer, auch wenn data leer ist bzw. die for-Schleife danach nicht durchlaufen wird und keine executeUpdates erzeugt. Außerdem fehlt in der catch-Methode das rollback,


----------



## Fohnbit (20. Jul 2015)

Hallo!

Ok, werde das ändern.
Wie macht man denn einen richtigen Rollback?

Vielen Dank!


----------

