HSQLDB Inserts/Updates sind nach Neustart der Anwendung

golliwogg

Mitglied
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:

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
 

golliwogg

Mitglied
Habe herausgefunden, dass die Änderungen erst mit einem Shutdown in die DB geschrieben werden. Davor stecken sie wohl noch im Cache der Anwendung drin.

Java:
		if (conn != null) {
			try {
				PreparedStatement stmt=conn.prepareStatement("shutdown");
				stmt.executeUpdate();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		System.exit(0);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Oracle SQL Inserts via Client vs SQL Datei via ScriptRunner Datenbankprogrammierung 6
J Mehrere Inserts bei Fehlschlag abbrechen Datenbankprogrammierung 2
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M SQL inserts bringen Router zum Absturz Datenbankprogrammierung 8
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
rambozola große anzahl an inserts bei oracle db unperformant Datenbankprogrammierung 15
N Wie in Java Zugriffe und Updates auf eine Datenbank regeln ? Datenbankprogrammierung 1
S 50.000 updates auf 50.000 Datensätze Datenbankprogrammierung 3
Kirby.exe Wann sind Transactionen Serialisierbar? Datenbankprogrammierung 2
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
E Wie kann ich textdateien, die als BLOB abgespeichert sind, aus der Datenbanktabelle auslesen? Datenbankprogrammierung 23
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
D MySQL Daten werden aus Datenbank gelesen, obwohl sie dort gar nicht angekommen sind Datenbankprogrammierung 8
U Nur den ersten Datensatz löschen wenn mehrere gleiche da sind Datenbankprogrammierung 2
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
C Daten finden, die nicht länger als 60 Minuten vergangen sind Datenbankprogrammierung 2
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben