# Ausgabe von Tabellendaten auf der heimischen Konsole ;)



## synthesist (7. Dez 2005)

guten abend
ich habe eine Tabelle MAIN mit 5 Spalten. die verbindung klappt soweit.wie kann ich über das Resultset in möglichst kurzer anweisung alle spalten und deren werte auf der heimischen java konsole ausgeben ?



```
....
                   ...

                  String sqlQuery = "SELECT * FROM MAIN";
		  rSet = stmt.executeQuery(sqlQuery);
		  
		  while (rSet.next())
		  {
		      System.out.println ("Wie geb ich hier alle Felder von MAIN aus?");
		      stmt.close();
		      conn.close();		      
		   }
                 catch (SQLException e)
		{
		  System.out.println( "Fehler bei Tabellenabfrage" + e );		  
		}

                 //und warum bekomme ich hier immer die meldung 
                //Fehler bei Tabellenabfragejava.sql.SQLException: Operation not allowed after ResultSet closed
```



            H I L F E[/code]


----------



## SlaterB (7. Dez 2005)

eine allgemeine Ausgabeoperation:


```
public static void gibAus(ResultSet r) throws SQLException {
		
	ResultSetMetaData rm = r.getMetaData();
		
	int anz = rm.getColumnCount();
	L.p("Anzahl Spalten: "+anz);

	String s = "";

	for (int i=0;i<anz; i++) {
		s += bL(rm.getColumnName(i+1),15)+ " - ";
	}
	L.p("Spalten: "+s);
				
	while (r.next()) {
		s = "";
		for (int i=0;i<anz; i++) {
			s += bL(r.getString(i+1),15)+ " - ";
		}
		L.p("Eintrag: "+s);
	}
	
}	

// L.p = System.out.println

public static String bL(String st, int length) {
	if (st == null) {
		st = "NULL";	
	}
	if (length < 2) {
		return st;
	}
		

	if (st.length() > length) {
		st = st.substring(0,length-2)+"..";
	} else {
		while (st.length() < length) {
			st = " "+st;
		}
	}
		
	return st;
}
```

falls deine Konsole alle Zeichen mit gleicher Breite ausgibt (Font Monospaced),
wäre eine Einrückung vorteilhaft damit alles schön untereinander steht,
dafür die Operation bL ("blocke Links", fülle von Links mit Leerzeichen auf bis zur angegebenen Länge)


----------



## L-ectron-X (7. Dez 2005)

synthesist hat gesagt.:
			
		

> und warum bekomme ich hier immer die meldung
> Fehler bei Tabellenabfragejava.sql.SQLException: Operation not allowed after ResultSet closed


Weil du gleich nach der Ausgabe des ersten Resultats (next() liefert true wenn es weitere Resultate gibt) der DB-Anfrage die Connection schließt.


----------



## synthesist (7. Dez 2005)

danke,
ja mit der Exception ist klar, man könnte ja auch vorher mal überlegen 
sorry, aber manchmal kommt man einfach nicht mehr auf die banalsten dinge.

aber für welche Klasse steht L ?


----------



## SlaterB (7. Dez 2005)

wie gesagt ist L.p einfach nur ne Abkürzung für das ewig lange 'System.out.println',
p ist der kürzest mögliche Operationsname (p wie println), L ist der kürzest mögliche Klassenname (L wie Logging),


----------



## Guest (7. Dez 2005)

danke leute, 

klasse forum!


----------

