# Tabellennamen in MySQL



## fsicher (6. Apr 2010)

Hi

Ich habe folgende Abfrage, mit der ich alle Tabellennamen aus einer Db auslesen möchte:


```
String query = "SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\'";
```

Dies funktioniert mit PostgreSQL sehr gut. Wenn ich es aber mit MySQL versuche, bekomme ich keine Daten, obwohl die gleiche Db auf dem MySQL-Server vorhanden ist. Ich nehme an, dass die Struktur von Metadaten anders ist. 

Wie müsste ich vorgehen, um die Tabellennamen aus einer MySQL-Db auslesen zu können? Wie würde die Abfrage aussehen?

Danke.


----------



## eRaaaa (6. Apr 2010)

Hilft das hier vllt:
http://www.java-forum.org/datenbank...bellen-sql-datenbank-anzeigen.html#post521894


----------



## fsicher (6. Apr 2010)

Ja, vielen Dank. 

Ich habe es allerdings nicht fertig gebracht, mit gleicher Abfrage sowohl die PostgreSQL als MySQL zu erschlagen. PostgreSQL versteht offenbar "SHOW TABLES FROM db_name" nicht. So habe ich es wie folgt gemacht. 


```
if (con.getMetaData().getDriverName().toUpperCase().contains("POSTGRESQL")){
    query = "SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\'";
}
else if (con.getMetaData().getDriverName().toUpperCase().contains("MYSQL")) {
    query = "SHOW TABLES FROM dbName";
}

ResultSet rs = stmt.executeQuery(query);

while (rs.next()){
    tableNames.add(rs.getString(1));
}
```

Falls jemand eine bessere Lösung hätte, wäre ich froh, wenn man sie hier angeben würde.


----------



## maki (6. Apr 2010)

SHOW TABLES ist ja auch MySQL spezifisch und deswegen schon quatsch 
Suche mal nach DataBaseMetadata und ResultSetMetadata, die gehen immer.


----------



## fsicher (6. Apr 2010)

Habe das hier gefunden:

Listing All Tables - getTables()


----------

