有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sql使用Java从Oracle获取表名?

我正在从事一个JavaGUI项目;在它的一个属性屏幕中,我使用3个组合框来获取:第一个用户选择DB名称,值为2。架构名称,并使用该架构下的所有表名称。当我从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) 个答案

  1. # 1 楼答案

    您基本上需要查询元数据。请参阅此example了解如何操作

  2. # 2 楼答案

    只需列出:

    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. # 3 楼答案

    不确定您所说的“您知道resultset的工作方式”是什么意思?!这将返回查询中的所有行:

    while (rs.next()) {
        System.out.print("Column 1 returned ");
        System.out.println(rs.getString(1));
    }
    
  4. # 4 楼答案

    您还可以使用:

    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了解更多信息