Tabellen nacheinander auslesen

Einklang.

Bekanntes Mitglied
Ihc möchte mehrere Tabellen nacheinander auslesen und bekomm eine komische Fehlermeldung:

Java:
 Statement s = dbconnection.createStatement();
        
        s.executeQuery ("Show tables");
        ResultSet resulttable = s.getResultSet ( );
        
        while (resulttable.next())
         {
        	 System.out.println(resulttable.getString(1));
        	 ResultSetMetaData mdtable = resulttable.getMetaData ( );
        	 ResultSet tabellenabfrage = s.executeQuery("Select * from " + resulttable.getString(1)); 
        	 System.out.println("Das ist der Inhalt der Tabelle " + resulttable.getString(1) + ": " + tabellenabfrage.getString(1));
        	 
         }

Das ist die Fehlermeldung:

Java:
datenbanktabelle
SQL-Exception bei der Abfrage: Operation not allowed after ResultSet closed
 
S

SlaterB

Gast
du brauchst mindestens zwei verschiedene Statements von der Connection,
das von der äußeren Query darf nicht durch eine neue innere Query 'kaputt gemacht' werden, sonst wird dessen ResultSet geschlossen,
die inneren Querys in einem zweiten Statement oder ganz einfach bei jeder Query ein neues Statement

alternativ die Ergebnisse der ersten Query vor der Schleife (mit einer anderen Schleife) alle extrahieren,
dann wird das ResultSet nicht mehr gebraucht


edit:
für ResultSet tabellenabfrage musst du auch erst next() aufrufen, bevor du irgendwas abfragen kannst
 

Einklang.

Bekanntes Mitglied
Ah ok ich bin einfach bissl zu ungeduldig mit meinen Sachen und muss mic hda mehr drauf konzentrieren....!

So vor paar Wochen angefangen und jetzt klappen schon kleine Sachen und damit andere auch Datenbanken auslesen können hier der funktionierende Code, der dann je nach Datenbankstruktur noch weiter so ausgebaut werden kann....!

Java:
  Statement s = dbconnection.createStatement();
        
        s.executeQuery ("Show tables");
        ResultSet resulttable = s.getResultSet ( );
        
        while (resulttable.next())
         {
        	 System.out.println(resulttable.getString(1));
        	 ResultSetMetaData mdtable = resulttable.getMetaData ( );
        	 Statement stat = dbconnection.createStatement();
        	 stat.executeQuery("Select * from " + resulttable.getString(1));
        	 ResultSet tabellenabfrage = stat.getResultSet();
        			 
        	 while (tabellenabfrage.next())
        	 {
        		 System.out.println(tabellenabfrage.getString(1));
        		 
        	 }
        	 
        	 
         }
 

Einklang.

Bekanntes Mitglied
Ich hab das noch etwas ausgebaut und jetzt ein PRoblem:

Java:
 Statement s = dbconnection.createStatement();
        
        s.executeQuery ("Show tables");
        ResultSet resulttable = s.getResultSet ( );
        
        while (resulttable.next())
         {
        	 System.out.println("Tabelle in Datenbank gefunden: " + resulttable.getString(1));
        	 ResultSetMetaData mdtable = resulttable.getMetaData ( );
        	 Statement stat = dbconnection.createStatement();
        	 stat.executeQuery("Select * from " + resulttable.getString(1));
        	 ResultSet tabellenabfrage = stat.getResultSet();
        	 ResultSetMetaData tabellemeta = tabellenabfrage.getMetaData ( );
        	 int spaltenzahl = tabellemeta.getColumnCount();
        	 System.out.println("Spaltenanzahl der Tabelle: " + spaltenzahl);
        	 
        	 while (tabellenabfrage.next())
        	 {
        		 int i = 1;
        		 for (i = 1; i < spaltenzahl; i++)
        		 {
        		 System.out.println("Spaltenname: " + tabellemeta.getColumnLabel(i));
        		 System.out.println("Type der Spalte " + tabellemeta.getColumnType(i));
        		 }
        	 }
        	 
        	 
         }

Für die letzte Zeile erhalte ich für den Type eine Zahl und die Frage ist wie ich nun die Zahl in einen String umwandle, denn schließlich soll ja angezeigt werden, ob die Spalte nun int, String usw usf ist....!
 

Einklang.

Bekanntes Mitglied
1. Ich benutze hier schon ein ResultSetMetaData mit "tabellemeta", hole dort eben die Spalte heraus aber eben als int und ich bräuchte das als String - eine klare Bezeichnung eben...!


2. Aber mir fiel noch was auf an dem Code, ein anderes PRoblem:

Java:
int i = 1; 
        Statement s = dbconnection.createStatement();
        
        s.executeQuery ("Show tables");
        ResultSet resulttable = s.getResultSet ( );
   	 	
        while (resulttable.next())
         {
        	 System.out.println("Tabelle in Datenbank gefunden: " + resulttable.getString(1));
        	 ResultSetMetaData mdtable = resulttable.getMetaData ( );
        	 // String tabellenname = mdtable.getColumnName(1);
        	 // System.out.println(tabellenname);
        	 Statement stat = dbconnection.createStatement();
        	 stat.executeQuery("Select * from " + resulttable.getString(1));
        	 ResultSet tabellenabfrage = stat.getResultSet();
        	 ResultSetMetaData tabellemeta = tabellenabfrage.getMetaData ( );
        	 int spaltenzahl = tabellemeta.getColumnCount();
        	 System.out.println("Spaltenanzahl der Tabelle: " + spaltenzahl);
        	 
        	 while (tabellenabfrage.next())
        	 {
        		 
        		 for (i = 1; i <= spaltenzahl; i++)
        		 {
        		 System.out.println("Spaltenname: " + tabellemeta.getColumnLabel(i));
        		 //System.out.println("Type der Spalte " + tabellemeta.getColumnType(i));
        		 }
        	 }
        	 
        	 
         }

Hier werden im Ergebnis dann alle Einträge durchgelaufen (rows) und immer wieder die Spalten abgelesen (columns) - das soll natürlich nur einmal pro Tabelle geschehen! Ist ja Unsinn sonst...!
Zwei Möglichkeiten seh ich: einmal in der SQL-Abfrage direkt und der wohl einfachere Weg (der aber mehr Verarbeitung von Daten beinhaltet) so wie es steht nur statt "tabellenabfrage.next()" nur irrgendwie einen Datensatz auslesen......!

So jetzt die Frage welcher Befehl da hilft um nur einen Datensatz zu nehmen und an dem die Metainfos zu spalten auszulesen....?
 
S

SlaterB

Gast
1. ich habe dir genannt wie du den int interpretieren kannst, was freilich eine größere Arbeit mit vielen ifs oder switch wäre,
sowie eine alternative Methode, die gleich den Namen zurückgibt(!),
mehr gibt es wohl wirklich nicht ;)

2.
man kann Querys beschränken, LIMIT 1 vielleicht bei MySql, je nach DB anders, nicht zwingend vorhanden,
oder eine Query mit [c]WHERE id = min(select alle Ids der Tabelle)[/c]

oder mit dem großen Resultset leben und auf die while-Schleife verzichten, ein einfaches if tu es auch, bzw. nur next()
bzw. du brauchst next() gar nicht, kannst gleich mit Metadata loslegen
 
B

Birne140787

Gast
Und hast erkannt, auf welche Schleife sich die rows beziehen und auf welche die columns?
 

Einklang.

Bekanntes Mitglied
Ok super so funktionierts:

Java:
int i = 1; 
        Statement s = dbconnection.createStatement();
        
        s.executeQuery ("Show tables");
        ResultSet resulttable = s.getResultSet ( );
   	 	
        while (resulttable.next())
         {
        	 System.out.println("Tabelle in Datenbank gefunden: " + resulttable.getString(1));
        	 ResultSetMetaData mdtable = resulttable.getMetaData ( );
        	 // String tabellenname = mdtable.getColumnName(1);
        	 // System.out.println(tabellenname);
        	 Statement stat = dbconnection.createStatement();
        	 stat.executeQuery("Select * from " + resulttable.getString(1));
        	 ResultSet tabellenabfrage = stat.getResultSet();
        	 ResultSetMetaData tabellemeta = tabellenabfrage.getMetaData ( );
        	 int spaltenzahl = tabellemeta.getColumnCount();
        	 System.out.println("Spaltenanzahl der Tabelle: " + spaltenzahl);
        	 
        	 if (tabellenabfrage.next())
        	 {
        		 
        		 for (i = 1; i <= spaltenzahl; i++)
        		 {
        			 System.out.println("Type der Daten aus der Spalte " + tabellemeta.getColumnLabel(i) + ": " + tabellemeta.getColumnTypeName(i));
        		 
        		 }
        	 }
        	 
         }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
T Tabellen Alias Datenbankprogrammierung 7
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8
G Tabellen-Dokument als Datenbank Datenbankprogrammierung 2
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
S Mysql abfrage über 2 tabellen. Datenbankprogrammierung 10
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
S Postgres und die Ursprungstabelle bei vererbten Tabellen Datenbankprogrammierung 4
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3

Ähnliche Java Themen


Oben