# Verlust von Ergebnissen



## Evolver (31. Jul 2007)

Ich möchte die Anzahl der Zeilen aller Tabellen einer Datenbank ausgeben. Dafür habe ich folgenden 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?


----------



## SlaterB (31. Jul 2007)

vielleicht ist es so wie hier?
http://www.java-forum.org/de/viewtopic.php?t=53155
(AutoCommit)


----------



## Evolver (31. Jul 2007)

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


```
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.


----------



## SlaterB (31. Jul 2007)

vielleicht zwei Statements benutzen?


----------



## Evolver (31. Jul 2007)

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?


----------



## SlaterB (31. Jul 2007)

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


----------

