2012-11-06 207 views
0

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

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

回答

1

你嘗試使用不同的表名模式?

你可以試試這個: -

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

thanx it works .. – user1776488

0

使用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")); 
     } 
} 
1

您可以使用MySQL查詢

show tables from tablename like '%_tbl'; 
1

我無法答覆羅希特的職位。他的回答看起來正確。

如果您對DatabaseMetaData的getTables方法的JDK文檔做了以下簽名和文檔評論。

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

參數:

目錄 - 類別名稱;必須與數據庫中存儲的 相匹配的目錄名稱; 「」檢索那些沒有目錄; null意味着 不應使用目錄名稱來縮小搜索範圍
schemaPattern - 模式名稱模式;必須與存儲在數據庫中的模式名稱匹配; 「」檢索那些沒有模式; null表示不應使用 架構名稱來縮小搜索範圍
tableNamePattern - 表名模式;必須與 數據庫中的 數據庫
類型中存儲的表名稱相匹配 - 表格類型列表必須來自要從getTableTypes()返回的 表類型列表,以包含; null全部返回 類型

在這種情況下使用%_tbl應該工作。

+0

@vishaljain ..是的,你需要至少50個聲望來評論某人的帖子。 –

+0

嘿謝謝Rohit ... Atleast我可以評論我的帖子n回答:) – Vishal

+0

@vishaljain ..你很快就會獲得足夠的特權來完成各種任務,當你發佈很好的答案並提出很好的問題。祝你好運,享受旅程:) –