SQL查询选择tablename

时间:2012-11-06 07:49:53

标签: java mysql

我希望得到所有以_tbl结尾的数据库表名,如xyz_tbl,pqr_tbl等。 在mysql中使用java.pls帮助我..目前我的查询检索所有tablename,但我想要以_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 个答案:

答案 0 :(得分:1)

您可以使用mysql查询

show tables from tablename like '%_tbl';

答案 1 :(得分:1)

您是否尝试使用其他表格名称模式?

你可以试试这个: -

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

答案 2 :(得分:1)

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

如果你对DatabaseMetaData的getTables方法的JDK文档做了以下是签名和文档注释。

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

参数:

  

目录 - 目录名称;必须与存储的目录名称匹配   在数据库中; “”检索那些没有目录的人; null意味着   目录名称不应用于缩小搜索范围   的 schemaPattern    - 模式名称模式;必须匹配模式名称,因为它存储在数据库中; “”检索没有架构的那些; null意味着   模式名称不应用于缩小搜索范围 tableNamePattern -   表名模式;必须匹配表名,因为它存储在   数据库
类型 - 表类型列表,必须来自列表   从getTableTypes()返回的表类型,包括; null返回all   类型

在这种情况下,使用%_tbl应该有效。

答案 3 :(得分: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"));
      }
 }