# String Array in While Schleife befüllen



## Nisha1323 (11. Mai 2014)

Hallo, ich möchte mir gerne mithilfe eines ResultSets die Namen der Tabellen innerhalb meiner Datenbank ausgeben lassen. Das klappt mithilfe der While - Schleife auch ganz super. 
Mein Problem ist, dass ich nicht ganz weiß, wie ich mein String Array, innerhalb der While-Schleife füllen soll. So wie es jetzt im Code ist, steht im Array immer nur der letzte Tabellenname. Mir ist schon auch klar, dass der Array Eintrag immer überschrieben wird, ich finde nur keinen Weg, immer einen neuen Eintrag zu dem Array hinzuzufügen mit dem jeweils neuen Tabellennamen. 
Ich gehe davon aus, dass ich die Größe des ResultSets nicht kenne, weshalb ich auch keine Schleife mit <AnzahlTabellen oder so machen kann...


```
public class TablesInPG {

    CPostgre P = new CPostgre();
    Connection pcon = P.con;

    String[] TableNames = {};

    public String[] getTableNames() {
        try {

            DatabaseMetaData dbmd = pcon.getMetaData();
           
            String[] Table = {"TABLE"};                 // Nur Ergebnisse vom Typ "TABLE" anzeigen

            ResultSet tN = dbmd.getTables(null, "public", null, Table);

            while (tN.next()) {
                
                System.out.println(tN.getString(3));
                TableNames = new String[]{tN.getString(3)};         //WIE LEGE ICH HIER IMMER EINEN NEUEN EINTRAG AN?       
                                                                    //Speichere die TabellenNamen in einem String-Array
            }

        } catch (SQLException ex) {

            System.out.println(ex.getMessage());

        }
        return TableNames;

    }
}
```


----------



## Thallius (11. Mai 2014)

Schau dir mal ArrayList an

Gruß

Claus


----------



## Wurstkopp (16. Mai 2014)

Ein Array sollte hier, wenn überhaupt, nur benutzt werden wenn du schon vorher eine fest definierte Anzahl von Werten erwartest.

z.B.:


```
String sql = "SELECT TOP 5...";
...
String[] tableNames = new String[5];
int i = 0;
while (tN.next()) {
  tableNames[i] = tN.getString(3)
  i++;
}
```

Wie aber Thallius schon korrekt gesagt hast, ist hier eine List der Datentyp deiner Wahl:


```
ArrayList<String> tableNames = new ArrayList<String>();
while (tN.next()) {
  tableNames.add(tN.getString(3));
}
```


----------

