2

如何获取模式的所有表名称?我试过这个:

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

3 回答 3

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

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

于 2013-06-25T15:54:33.983 回答
3

尝试以下操作:

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

文档说第三列是TABLE_NAME

于 2013-06-25T15:49:44.703 回答
1

对于 mysql:5.6 -

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

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

DatabaseMetaData meta = (DatabaseMetaData) 

support.getConnection().getMetaData();
    rs = meta.getTables("schema_name", null, null, new String[] { "TABLE" });
    while (rs.next()) {
        String tblName = rs.getString("TABLE_NAME");
        System.out.println(tblName);
    }
于 2019-06-18T13:20:07.333 回答