# ResultSet: Spaltennamen ermitteln



## Thomas 22 (28. Sep 2004)

Hallo, 

ich habe ein ResultSet, jetzt dachte ich, es gibt eine Methode, die mir von einer Tabelle die kompletten Spaltennamen ausgibt? Finde aber nichts in der Api....Oder kann man irgendwie anders alle Spaltenname der Tabelle ermitteln? 

Danke euch!!!


----------



## P3AC3MAK3R (28. Sep 2004)

Mit dem Interface ResultSetMetaData solltest Du weiterkommen:

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSetMetaData.html
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSetMetaData.html#getColumnName(int)


----------



## bummerland (28. Sep 2004)

bei mysql gibts den befehl SHOW COLUMNS. weiss aber nicht, wie das bei anderen datenbanken ist.


----------



## abollm (28. Sep 2004)

Das lässt sich z.B. mit folgendem SQL-Befehl in Java bewerkstelligen:


```
ResultSet rs = stmt.executeQuery("SELECT * FROM varray_table");
    showResultSet (rs);
```

Außerdem ist das natürlich datenbankabhängig. In Oracle musst du folgendes eingeben:


```
ResultSet rs = stmt.executeQuery("SELECT column_name FROM user_tab_columns 
                                                       WHERE table_name = 'TAB_NAME';
```

Wie das in mySQL geht, weiß ich nicht. Aber Metadaten ist schon einmal ein guter Hinweis!


----------



## P3AC3MAK3R (28. Sep 2004)

abollm hat gesagt.:
			
		

> Das lässt sich z.B. mit folgendem SQL-Befehl in Java bewerkstelligen:
> 
> 
> ```
> ...


Ich bezweifle, daß das richtig ist.

Mit dieser Abfrage erhält man doch eigentlich nur die Inhalte der Datenfelder, aber nicht die Titel der Datenfelder.

[Edit]Ah, Du willst auf die Systemtabellen zugreifen. Das ist dann wieder was anderes. [/Edit]


----------



## abollm (28. Sep 2004)

P3AC3MAK3R hat gesagt.:
			
		

> abollm hat gesagt.:
> 
> 
> 
> ...



Du hast natürlich grundsätzlich recht. Das war nur ein Beispiel, um den grundsätzlichen Mechanismus zu verdeutlichen. Das eigentlich Entscheidende steht im zweiten Code-Schnipsel.


----------



## Bleiglanz (28. Sep 2004)

besser ist vielleicht die DatabaseMetaData Methode:

getColumns

public ResultSet getColumns(String catalog,
                            String schemaPattern,
                            String tableNamePattern,
                            String columnNamePattern)
                     throws SQLException

    Retrieves a description of table columns available in the specified catalog.

    Only column descriptions matching the catalog, schema, table and column name criteria are returned. They are ordered by TABLE_SCHEM, TABLE_NAME, and ORDINAL_POSITION.

    Each column description has the following columns:

       1. TABLE_CAT String => table catalog (may be null)
       2. TABLE_SCHEM String => table schema (may be null)
       3. TABLE_NAME String => table name
       4. COLUMN_NAME String => column name
       5. DATA_TYPE int => SQL type from java.sql.Types
       6. TYPE_NAME String => Data source dependent type name, for a UDT the type name is fully qualified
       7. COLUMN_SIZE int => column size. For char or date types this is the maximum number of characters, for numeric or decimal types this is precision.
       8. BUFFER_LENGTH is not used.
       9. DECIMAL_DIGITS int => the number of fractional digits
      10. NUM_PREC_RADIX int => Radix (typically either 10 or 2)
      11. NULLABLE int => is NULL allowed.
              * columnNoNulls - might not allow NULL values
              * columnNullable - definitely allows NULL values
              * columnNullableUnknown - nullability unknown 
      12. REMARKS String => comment describing column (may be null)
      13. COLUMN_DEF String => default value (may be null)
      14. SQL_DATA_TYPE int => unused
      15. SQL_DATETIME_SUB int => unused
      16. CHAR_OCTET_LENGTH int => for char types the maximum number of bytes in the column
      17. ORDINAL_POSITION int => index of column in table (starting at 1)
      18. IS_NULLABLE String => "NO" means column definitely does not allow NULL values; "YES" means the column might allow NULL values. An empty string means nobody knows.
      19. SCOPE_CATLOG String => catalog of table that is the scope of a reference attribute (null if DATA_TYPE isn't REF)
      20. SCOPE_SCHEMA String => schema of table that is the scope of a reference attribute (null if the DATA_TYPE isn't REF)
      21. SCOPE_TABLE String => table name that this the scope of a reference attribure (null if the DATA_TYPE isn't REF)
      22. SOURCE_DATA_TYPE short => source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types (null if DATA_TYPE isn't DISTINCT or user-generated REF)


----------



## P3AC3MAK3R (28. Sep 2004)

abollm hat gesagt.:
			
		

> P3AC3MAK3R hat gesagt.:
> 
> 
> 
> ...


Der 2. Code-Ausschnitt war leider noch nicht vorhanden, als ich geantwortet hatte. Daher mein Posting.


----------



## Thomas22 (28. Sep 2004)

Besten Dank euch!!!


----------

