Verlust von Ergebnissen

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich möchte die Anzahl der Zeilen aller Tabellen einer Datenbank ausgeben. Dafür habe ich folgenden Code:

Code:
ResultSet tTmpResult = tState.executeQuery("SELECT table_name FROM user_tables");
				while(tTmpResult.next()) {
					System.out.print(tTmpResult.getString("table_name") + ": ");
					ResultSet tResult = tState.executeQuery("SELECT COUNT(*) FROM " + tTmpResult.getString("table_name"));
					if(tResult.next()) System.out.println(tResult.getString("count(*)"));
				}

Aber so wird dies nur für den ersten Tabellennamen ausgeführt. Führe ich nur das erste SELECT (Zeile 1) aus, erhalte ich alle Tabellennamen. Führe ich aber in der Schleife die zweite Abfrage (Zeile 4) durch, so wird dann die Schleife beendet (ich erhalte nur die Anzahl für die erste Tabelle). Es hat also den Anschein, als würden die ersten Resultate durch das zweite SELECT verloren gehen.

Woran liegt das, wie muss ich es richtig machen?
 

Evolver

Bekanntes Mitglied
Das schien ja meinem Problem ähnlich zu sein, aber ich habe es ohne Erfolg probiert.

Code:
tConDB.setAutoCommit(false);
ResultSet tTmpResult = tState.executeQuery("SELECT table_name FROM user_tables");
// tConDB.commit();
while(tTmpResult.next()) {
	System.out.print(tTmpResult.getString("table_name") + ": ");
	ResultSet tResult = tState.executeQuery("SELECT COUNT(*) FROM " + tTmpResult.getString("table_name"));
	// tConDB.commit();
	if(tResult.next()) System.out.println(tResult.getString("count(*)"));
}
// tConDB.commit();
tConDB.setAutoCommit(true);

Die auskommentierten "manuellen" Commits hatte ich testweise in allen möglichen Kombinationen drin, es hat aber nie geklappt.
 

Evolver

Bekanntes Mitglied
Ohja, mit zwei Statements funktioniert. Danke!
Kannst du mir auch sagen, warum / in wiefern das Ergebnis (ResultSet) von dem Statement so abhängig ist? Werden die Ergebnisse im ResultSet nur referenziert und liegen eigentlich im Statement?
 
S

SlaterB

Gast
wenn ich's gewusst hätte, hätte ich es direkt (auch) vorgeschlagen,
fiel mir eher so als Strohhalm ein, da in dem anderen Thread ja auch zwei Statements sind,
JDBC verwende ich eh nicht

selbst wenn es nun bei dir funktioniert ist es noch nicht sicher,
ob das so richtig oder falsch ist,
sowas wird eben selten in Tutorials besprochen/ schwer zu finden
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben