如何获取模式的所有表名?

时间:2013-06-25 15:48:18

标签: java jdbc

如何获取架构的所有表名?我试过这个:

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));
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

编辑:第二个参数是指定架构模式的位置(例如“Sales”),所有架构都为null。

答案 2 :(得分:0)

对于mysql:5.6-

要获取特定模式的特定表,我必须将模式名称传递为“ catalog” 参数(第一参数)。如果我将它作为“ schemaPattern” 参数(第二个参数)传递,它会忽略。

我认为这与mysql中“创建模式”是“创建数据库”的同义词有关。 https://dev.mysql.com/doc/refman/8.0/en/create-database.html

apache2