我正在开发一个Java GUI项目;在其属性屏幕之一中,我使用3个组合框来获取:第一个用户选择数据库名称,使用此值2.Schema名称以及该模式下的所有表名称。当我从DB获取值并设置它时,我可以使用ResultSet。但是通过这种方式,我只能带一个值,因为你知道ResultSet的工作方式。那么有没有其他方法可以让我们拿起所有的表名:
SELECT TABLE_NAME FROM ALL_TABLES;
并将它们放在一个字符串数组上......或者......有可能,我只想把它们的名字放在一个列表或任何东西中。
谢谢。
编辑:
以下是为此目的测试的简单代码:
ResultSet rs = null;
PreparedStatement ps = null;
String result;
ps = conn.prepareStatement("SELECT TABLE_NAME FROM ALL_TABLES");
rs = ps.executeQuery();
while(rs.next())
{
result = rs.getString(1);
System.out.println(rs.getString(1));
}
答案 0 :(得分:0)
您需要基本上查询元数据。请参阅此example了解如何操作。
答案 1 :(得分:0)
你不知道'你知道结果集的工作方式'是什么意思吗?这将返回查询中的所有行:
while (rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
答案 2 :(得分:0)
只需使用列表:
List<String> tableNames = new ArrayList<String>();
while(rs.next()) {
String tableName = rs.getString(1);
tableNames.add(tableName);
}
// there: your list contains all the table names
阅读tutorial about collections。这是所有Java开发人员必须知道的东西。
答案 3 :(得分:0)
你也可以使用:
DatabaseMetaData metadata = currentConnection.getMetaData();
String[] names = {"TABLE"};
ResultSet tables = metadata.getTables(null,"%", "%", names);
while (tables.next()) {
String tableName = tables.getString("TABLE_NAME");
String tableSchema = tables.getString("TABLE_SCHEM");
}
阅读this了解详情。