Sqlite cannot commit

Fohnbit

Top Contributor
Hallo!

ich schreibe zyklisch in eine Sqlite Datenbank mit:
Java:
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]
 
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,
 

Neue Themen


Zurück
Oben