java-如何从数据库中获取所有表名?
我想从数据库架构中检索所有表名,并在可能的情况下,从指定的前缀开始获取所有表。
我尝试使用JDBC的connection.getMetaData().getTables(),但它根本不起作用。
Connection jdbcConnection = DriverManager.getConnection("", "", "");
DatabaseMetaData m = jdbcConnection.getMetaData();
ResultSet tables = m.getTables(jdbcConnection.getCatalog(), null, "TAB_%", null);
for (int i = 0; i < tables.getMetaData().getColumnCount(); i++) {
System.out.println("table = " + tables.getMetaData().getTableName(i));
}
有人可以帮我吗?
6个解决方案
120 votes
您需要遍历ResultSet调用DatabaseMetaData::getTables。
这是来自java2s.com的示例:
DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
第3列是DatabaseMetaData::getTables(请参阅DatabaseMetaData::getTables的文档)。
Peter Lang answered 2019-12-29T19:37:30Z
26 votes
public void getDatabaseMetaData()
{
try {
DatabaseMetaData dbmd = conn.getMetaData();
String[] types = {"TABLE"};
ResultSet rs = dbmd.getTables(null, null, "%", types);
while (rs.next()) {
System.out.println(rs.getString("TABLE_NAME"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
Rohit answered 2019-12-29T19:37:46Z
5 votes
在您的示例中,问题是在DatabaseMetaData的getTables函数中传递了表名模式。