# MySQL Datenbankennamen einlesen



## Taramsis (29. Apr 2009)

Hi Leute,

ich habe ein Wizard entworfen und möchte dem User ermöglichen Module zu erstellen, die einer DB zugeordnet sind. 
Mein Problem ist, dass ich die Namen aller DB auf meiner Localhost einlesen möchte und ich nicht die Namen erhalte, sondern immer nur die Werte der Namen.
Man kann ja mit 
	
	
	
	





```
SHOW DATABASES
```
 alle DB ausgeben. Dies habe ich in ein Resultset gespeichert:


```
public Object[] listDB() {
        Object[] list = null;    
        int listSize = 0;
        
        try {
            Class.forName(driver);
            con = (Connection) DriverManager.getConnection(url , user, pass);
            
            stmt = (Statement) con.createStatement();

            database =(ResultSet) stmt.executeQuery( "SHOW DATABASES" );

            while (database.next()) {
                listSize++;
            }
            //database.first();

            if (listSize > 0) {
                list = new Object[listSize];
                for (int i = 0; i < listSize; i++) {
                    list[i] = database.toString().toCharArray();
                    

                    database.next();
                }
            }

            con.close();
        }

        catch(Exception e) {
            e.printStackTrace();
        }
        System.out.println("DB: " + listSize);
        return list;
    }
```

Die "listSize" wir richtig angezeigt, nur die Zeile

```
list[i] = database.toString().toCharArray();
```
ist anscheinend vermurkst. Ich habe "database" schon in allen Variationen ausgegeben.;(
Natürlich habe ich alle Variablen korrekt erstellt...

Würde mich über Hilfe Freuen!

Taramsis


----------



## maki (29. Apr 2009)

Würde ich über DatabaseMetaData (Java 2 Platform SE 5.0) lösen.


----------



## Taramsis (29. Apr 2009)

hatte ich auch versucht habe leider nur die Möglichkeit über

```
list[i] = database.getMetaData().
```
auf die Colums zuzugreufen und nicht auf die Rows.

Zur info: mir werden die DBWerte in meiner Combobox in der Form "[C@1878144" angezeigt- ich habe 10 DBs und bekommen für jeden in der Combobox einen anderen Wert - nur die Strings möchte er mir einfach nicht anzeigen???:L


----------



## maki (29. Apr 2009)

> auf die Colums zuzugreufen und nicht auf die Rows.


Hää? ???:L

Deine Variable "database" ist übrigens ein ResultSet, solltest aber die getMetadata Methode der Connection verwenden: Connection (Java 2 Platform SE 5.0))


----------



## Taramsis (29. Apr 2009)

ich meinte ich habe nur die Möglichkeit mit der Methode getMetaData() auf Informationen der Spalte zuzugreifen und nicht auf die einzelnen Zeilen.


----------



## sparrow (29. Apr 2009)

Die Klasse Connection (bei dir das Objekt mit dem Namen con) hat eine Methode namens .getMetaData (vgl.: Connection (Java 2 Platform SE 5.0)) ), das liefert dir ein Objekt des Typs DataBaseMetaData zurück. Damit kommst du weiter.

Gruß
Sparrow


----------



## bronks (30. Apr 2009)

Taramsis hat gesagt.:


> ...
> 
> 
> 
> ...



Sollte m.E. so aussehen:

```
list[i] = database.getString(1);
```


----------



## Taramsis (30. Apr 2009)

Danke Bronks - ich hab vor lauter Bäume den Wald nicht mehr gesehen!!!!:lol:


----------

