显示 java 中的数据库表

Display tables of a database in java

我正在开发一个 java 应用程序,我想显示 Mysql 数据库中的表列表,我在网上搜索后发现 "SHOW TABLES FROM [DB]" 是适当的请求,但我如何在 java swing/awt 应用程序上显示最后的结果, PS : 我试着把请求的结果放在一个resultset上,

res = sta.executeQuery("SHOW TABLES FROM sinpec ");

但是没用...

我该如何继续?

根据 this 博客,您可以使用以下语句:

SELECT table_name FROM information_schema.tables WHERE table_type = 'base table' AND table_schema='test';

这似乎与SHOW TABLES的效果相似。

这应该适用于您正在使用的结果结果。

请尝试这个查询:-

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE table_schema = "DATABASE_NAME"

This example 或许能帮到你。基本上你可以使用 DatabaseMetaData class 来完成你的任务。

public static String SCHEMA_NAME="${YOUR_SCHEMA_NAME}";

 public static void main(String[] args) {

  //create and setup your database and get db connection
  DataBase db = new DataBase();
  db.init();

  try {
   Connection con = db.getConnection();
    DatabaseMetaData metaData = con.getMetaData();

    String tableType[] = {"TABLE"};

    StringBuilder builder = new StringBuilder();

   ResultSet result = metaData.getTables(null,SCHEMA_NAME,null,tableType);
    while(result.next())
    {
     String tableName = result.getString(3);

     builder.append(tableName + "( ");
     ResultSet columns = metaData.getColumns(null,null,tableName,null);

     while(columns.next())
     {
      String columnName = columns.getString(4);
      builder.append(columnName);
      builder.append(",");
     }
     builder.deleteCharAt(builder.lastIndexOf(","));
     builder.append(" )");
     builder.append("\n");
     builder.append("----------------");
     builder.append("\n");


    }

   System.out.println(builder.toString());


  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }


 }

您可以试试这个显示所有表格的解决方案

try {
    DbMd = myconn.getMetaData();
    Rslt = DbMd.getTables(null, null, "%", null);

    while (Rslt.next()) {
        System.out.println(Rslt.getString(3));
    } 
}
catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}