Hallo,
bin Neuling in Java und DB und plage mich mit einem seltsamen Effekt beim Herumspielen mit DML: warum werden trotz Autocommit und einem zusätzlich von mir explizit gesetzten Commit die Änderungen nur während der Programmlaufzeit übernommen? Wenn ich mit dem HSQL DB Manager arbeite passiert das nicht. Hier der Code-Auszug:
Das Select am Schluss beweist, dass das Update ordnungsgemäß ausgeführt wurde. Lasse ich das Programm nochmal laufen, dann sind aber die alten Daten wieder da!
Vielen Dank für jeden Tipp & schönen Gruß, Volker
bin Neuling in Java und DB und plage mich mit einem seltsamen Effekt beim Herumspielen mit DML: warum werden trotz Autocommit und einem zusätzlich von mir explizit gesetzten Commit die Änderungen nur während der Programmlaufzeit übernommen? Wenn ich mit dem HSQL DB Manager arbeite passiert das nicht. Hier der Code-Auszug:
Java:
try {
Statement stmt = conn.createStatement();
String query = "SELECT * FROM \"test\"";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getInt("tst_id") + "\t"
+ rs.getString("tst_name") + "\t");
}
rs.close();
stmt.close();
String update = "UPDATE \"test\" SET \"tst_name\"=? WHERE \"tst_id\"=?";
PreparedStatement stmtIU = conn.prepareStatement(update);
stmtIU.setString(1, "Otto Sheuffele");
stmtIU.setInt(2, 2);
stmtIU.executeUpdate();
conn.commit();
stmtIU.close();
// Kontrolle:
stmt = conn.createStatement();
query = "SELECT * FROM \"test\"";
rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getInt("tst_id") + "\t"
+ rs.getString("tst_name") + "\t");
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.err.println("SQL-Fehler!");
System.err.println(e);
System.exit(-1);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Das Select am Schluss beweist, dass das Update ordnungsgemäß ausgeführt wurde. Lasse ich das Programm nochmal laufen, dann sind aber die alten Daten wieder da!
Vielen Dank für jeden Tipp & schönen Gruß, Volker