我希望得到所有以_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;
}
答案 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"));
}
}