4

我试图从数据库中选择所有表名。我为此使用以下代码行。

DatabaseMetaData databaseMetaData =  connection.getMetaData();
            resultSet = databaseMetaData.getTables(null, dbName, null, null);
            while(resultSet.next()){
                        //doing operations - take table name and all that
                        }

这里的问题是在 mysql 的情况下它工作正常,这意味着如果底层数据库是 mysql - 没问题。但是当我用 mssql 尝试相同的代码时,结果集是空的。是否还有其他替代方法可以从 mssql 数据库中获取表详细信息。?

如果它的..请提供在 mysql、mssql、oracle 等 diff 数据库下获取表详细信息的区别;因为就我而言,我的数据库可能是上述任何一种。任何人都可以请帮忙。

4

3 回答 3

1

获取代码,例如:

Connection con = null;
    try {

      Class.forName(
        "com.microsoft.sqlserver.jdbc.SQLServerDriver");
      con = DriverManager.getConnection(
          "jdbc:sqlserver://localhost:1269;"
        + "user=sa;password=HerongYang;"
        + "database=AdventureWorksLT");

      DatabaseMetaData meta = con.getMetaData();
      ResultSet res = meta.getTables(null, null, null, 
         new String[] {"TABLE"});
      System.out.println("List of tables: "); 
      while (res.next()) {
         System.out.println(
            "   "+res.getString("TABLE_CAT") 
           + ", "+res.getString("TABLE_SCHEM")
           + ", "+res.getString("TABLE_NAME")
           + ", "+res.getString("TABLE_TYPE")
           + ", "+res.getString("REMARKS")); 
      }
      res.close();

      con.close();

您可以在此页面尝试此链接:

列出所有表 - getTables()

于 2012-07-04T05:32:48.243 回答
0

我认为以下链接会对您有所帮助。

http://www.roseindia.net/jdbc/jdbc-mysql/AllTableName.shtml

于 2012-07-04T05:37:08.793 回答
0

MySQL 安装附带默认数据库。其中一个数据库名为“mysql”。如果您使用“mysql”数据库并尝试获取元数据和表名,它会给出空结果。我通过创建另一个名为“mydb”的数据库来验证这一点,然后用它来获取元数据,然后是表名。它翻转工作。

使用名为“mysql”的默认数据库似乎 MYSQL 存在一些问题或限制

于 2018-04-13T13:38:35.457 回答