首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Java 獲取資料庫所有表名的多種方法(JDBC 元數據與原生 SQL)

     編輯:MySQL 綜合教學

Java 獲取資料庫所有表名的多種方法(JDBC 元數據與原生 SQL)

在開發中常需動態獲取表清單,本文匯總 JDBC 標準 API 及主流資料庫原生 SQL 兩種路徑。

方法一:JDBC DatabaseMetaData(通用、推薦)

public void getTableNames(Connection con) {
    try {
        DatabaseMetaData meta = con.getMetaData();
        // 只查 TABLE 類型,排除 VIEW、SYSTEM TABLE 等
        ResultSet rs = meta.getTables(null, null, null, new String[]{"TABLE"});
        while (rs.next()) {
            System.out.println("表名:" + rs.getString("TABLE_NAME"));
            System.out.println("擁有者:" + rs.getString("TABLE_SCHEM"));
            System.out.println("------------------------------");
        }
        con.close();
    } catch (Exception e) {
        try { if (con != null) con.close(); } catch (SQLException ignored) {}
        e.printStackTrace();
    }
}

關鍵點: getTables(catalog, schemaPattern, tableNamePattern, types[]),types 可為 TABLE、VIEW、SYSTEM TABLE 等。

方法二:各資料庫原生 SQL(輕量、無需連接池元數據鎖)

資料庫SQL
MySQLSHOW TABLES;
OracleSELECT object_name FROM user_objects WHERE object_type = 'TABLE';
SQL ServerSELECT name FROM sysobjects WHERE xtype = 'U'; (2000/2005+)
SybaseSELECT name FROM sysobjects WHERE type = 'U';
DB2SELECT tabname FROM syscat.tables WHERE tabschema = CURRENT SCHEMA;

選型建議

  • **跨資料庫專案**:優先用 DatabaseMetaData,屏蔽差異。
  • **單資料庫、高頻調用**:原生 SQL 更輕量,避免元數據鎖競爭。
  • **僅需表名字串**:原生 SQL 直接返回 ResultSet 字串,省去元數據解析開銷。

來源

參考:https://hi.baidu.com/rybwxn/blog/item/1a59502a75a7de25d52af1cc.html

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved