# Spaltennamen ermitteln



## javaant (14. Jul 2004)

hi,
möchte aus einer DB-Tabelle (MySQL) die Spaltennamen rausholen und zwar nur die spaltennamen. momentan geh ich mit:

"SELECT * FROM XXX"

auf die DB und frag per ResultSetMetaData die Spaltennamen ab, aber das heisst doch das mit diesem select auch alle Tabellen-Einträge gelesen werden, d.h. wenn ich 1 million einträge hab muss ich erst alle einträge einlesen um dann mit ResultSet.getMetaData() meine daten zu bekommen oder spielt das keine rolle?
ich kann ja mit:

SELECT count(*)... auch die anzahl der einträge zählen und nicht mehr!

dank und gruß
stefan


----------



## P3AC3MAK3R (14. Jul 2004)

Verschoben: JDBC


----------



## semi (15. Jul 2004)

Lass' mal 
	
	
	
	





```
SHOW FIELDS FROM Tabellenname
```
laufen.
Die Namen der Tabellenfelder stehen dann im ResultSet (als "field").

Edit: Setzt aber voraus, dass der "User", den Du für den mySQL-Zugriff
verwendest, den SHOW-Befehl ausführen darf. 

Gruß,
Michael


----------



## javaant (16. Jul 2004)

Da ich auch Oracle im Einsatz habe bin ich nun auch auf der suche nach einem sql-statement auf eine oracle-DB, kann mir da jemand weiterhelfen?

danke im voraus
stefan


----------



## semi (17. Jul 2004)

Ermittele diese Informationen am besten über das Connection-Objekt bzw. DatabaseMetaData.

```
public static void dumpMetadata(Connection connection) throws SQLException
  {
    StringBuffer out = new StringBuffer(512);
    DatabaseMetaData dbMetaData = connection.getMetaData();
    ResultSet tablesRS = dbMetaData.getTables(connection.getCatalog(), "%", "%", new String[] { "TABLE" });
    while(tablesRS.next())
    {
      String tableName = tablesRS.getString("TABLE_NAME");
      out.append("Tabelle: ").append(tableName).append("\n");
      ResultSet columnsRS = dbMetaData.getColumns(connection.getCatalog(), "%", tableName, "%");
      while(columnsRS.next())
      {
        out.append("   ").append(columnsRS.getString("COLUMN_NAME")).append("\n");
      }
      out.append("\n");
      columnsRS.close();
    }
    tablesRS.close();
    System.out.println(out.toString());
  }
```
Gruß,
Michael


----------

