使用Java从Oracle中获取表名?

时间:2011-10-18 12:25:30

标签: java sql oracle resultset

我正在开发一个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));
}

4 个答案:

答案 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了解详情。