2013-06-25 3 views
1

Как я могу получить все таблицы имен схемы? Я пробовал:Как я могу получить все имена таблиц схемы?

DatabaseMetaData metaData = (DatabaseMetaData) conn.getMetaData(); 
metaData.getTables(null, schema, null, null); 

но не работает.

Наконец я сделал это:

conn.setCatalog(mySchema); 
String sqlQuery = "show tables"; 
rs = ps.executeQuery(sqlQuery); 
while (rs.next()) 
{ 
    System.out.print(rs.getString(1)); 
} 
+0

Что такое СУБД? –

+0

Какая база данных? Вполне возможно, что то, что вы считаете схемой, на самом деле является каталогом в терминах JDBC. –

+0

База данных MySQL – Jjreina

ответ

4
ResultSet tables = metaData.getTables(null, null, null, new String[] {"TABLE"}); 
while (tables.next()){ 
    System.out.print(tables.getString("TABLE_NAME") + " "); 
} 

EDIT: Второй параметр, где вы указываете шаблон схемы (например, «Sales»), нуль для всех схем.

+1

Я думаю, что это работает со всеми поставщиками. Когда пользователь не соответствует схеме, вам следует избегать указания схемы у некоторых поставщиков. Это зависит от реализации драйвера. –

+0

и нет необходимости использовать имя схемы? потому что у моей базы данных есть несколько схем – Jjreina

+0

Нет, это не обязательно. Название схемы используется для сужения поиска. – luke657

4

Попробуйте следующее:

DatabaseMetaData metaData = (DatabaseMetaData) conn.getMetaData(); 
ResultSet rs = metaData.getTables(null, null, "%", null); 
while (rs.next()) { 
    System.out.println(rs.getString(3)); 
} 

documentation говорит о том, что третий столбец TABLE_NAME.