0

我想获取所有以_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;
}
4

4 回答 4

1

你可以使用mysql查询

show tables from tablename like '%_tbl';
于 2012-11-06T07:57:01.817 回答
1

您是否尝试过使用不同的表名模式?

你可以试试这个: -

c.rs = dbm.getTables(null, null, "%_tbl", types);
于 2012-11-06T07:57:27.983 回答
1

我无法回复 Rohit 的帖子。他的回答看起来是正确的。

如果您对 DatabaseMetaData 的 getTables 方法的 JDK 文档执行以下操作,请参阅签名和文档注释。

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

参数:

目录- 目录名称;必须与存储在数据库中的目录名称匹配;"" 检索那些没有目录的;null 表示不应使用目录名称来缩小搜索范围
schemaPattern - 模式名称模式;必须与存储在数据库中的模式名称匹配;"" 检索那些没有模式的;null 表示不应使用模式名称来缩小搜索范围
tableNamePattern - 表名称模式;必须与存储在数据库
类型中的表名称匹配- 表类型列表,必须来自 getTableTypes() 返回的表类型列表,以包括在内;null 返回所有类型

在这种情况下,使用%_tbl应该可以。

于 2012-11-06T08:12:35.263 回答
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"));
      }
 }
于 2012-11-06T07:54:56.203 回答