簡體   English   中英

SQL查詢選擇表名

[英]SQL query to select tablename

我想獲取所有以_tbl結尾的數據庫表名,例如xyz_tbl,pqr_tbl等。在mysql中使用java.pls幫助我..當前,我的查詢檢索所有表名,但我首先想要以_tbl結尾的表名。 我的代碼是...

public List selectTable() {
    List tableNameList= new ArrayList();

    try {
        DatabaseMetaData dbm = c.conn.getMetaData();
        String[] types = {"TABLE"};
        c.rs = dbm.getTables(null, null, "%", types);
        while (c.rs.next()) {
            tableNameList.add(c.rs.getString("TABLE_NAME"));
        }            
    } catch(Exception e) {
        System.out.println(e.toString());              
    }
    return tableNameList;
}

您可以使用mysql查詢

show tables from tablename like '%_tbl';

您是否嘗試過使用其他表格名稱模式?

您可以嘗試以下方法:-

c.rs = dbm.getTables(null, null, "%_tbl", types);

我無法回復Rohit的帖子。 他的答案看起來正確。

如果對DatabaseMetaData的getTables方法的JDK文檔進行操作,則以下是簽名和文檔注釋。

ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, 
                    String[] types) throws SQLException

參數:

catalog-目錄名稱; 必須與存儲在數據庫中的目錄名稱匹配; “”檢索那些沒有目錄的內容; null表示不應使用目錄名稱來縮小搜索范圍
schemaPattern-模式名稱模式; 必須與存儲在數據庫中的架構名稱匹配; “”檢索那些沒有模式的文件; null表示不應使用架構名稱來縮小搜索范圍
tableNamePattern-表名稱模式; 必須與存儲在數據庫中的表名匹配
類型 -表類型的列表,必須包含從getTableTypes()返回的表類型的列表中才能包含; null返回所有類型

在這種情況下,應使用%_tbl

使用String.endsWith()方法檢查表名是否以“ _tbl”結尾。

例如在while循環中:

 while (c.rs.next())
 {
      String tableName = c.rs.getString("TABLE_NAME");
      if(tableName.endsWith("_tbl"))
      {
          tableNameList.add(c.rs.getString("TABLE_NAME"));
      }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM