1

JCombo Box にテーブルを表示するメソッドがあります。

private void getTables() throws SQLException {


    dburl = "jdbc:oracle:thin:@localhost:1521:ORCL";
    connection = DriverManager.getConnection(dburl, "c##lambros", "16111111");
    dbmd = connection.getMetaData();
    rset= dbmd.getTables(null, null, "%", null);

    while (rset.next()) {
      System.out.println(rset.getString(3));
    }

}

問題は、Criminals、Agents、Informants という名前のテーブルが 3 つしかないことですが、このメソッドは、_GV$SXGG_APPLY_READER、_GV$SXGG_APPLY_SERVER、_GV$SXGG_CAPTURE など、あらゆる種類のテーブルを返します。それらを除外するにはどうすればよいですか?

4

3 に答える 3

2

見つけた。適切なコードは次のとおりです。

private void getTables() throws SQLException {


    dburl = "jdbc:oracle:thin:@localhost:1521:ORCL";
    connection = DriverManager.getConnection(dburl, "c##lambros", "16111111");
    dbmd = connection.getMetaData();
    query = " Select table_name FROM user_tables ";
    stmt = connection.createStatement();
    rset = stmt.executeQuery(query);

    while (rset.next()) {
      System.out.println(rset.getString(1));
    }

}
于 2013-10-16T08:54:44.453 に答える
0

Oracle docs getTables() のように4つの引数を受け入れcatalog, schemaPattern,tableNamePattern,typesますが、nullを作成しているため、すべてのテーブル名を取得しています

既存のコードで、この方法で 4 番目の引数を作成しますnew String[]{"TABLE"}

完全なコードは

private void getTables() throws SQLException {

String[] types = {"TABLE"};
    dburl = "jdbc:oracle:thin:@localhost:1521:ORCL";
    connection = DriverManager.getConnection(dburl, "c##lambros", "16111111");
    dbmd = connection.getMetaData();
    rset= dbmd.getTables(null, null, "%", types);

    while (rset.next()) {
      System.out.println(rset.getString("TABLE_NAME"));
    }

}
于 2013-10-16T08:37:30.710 に答える
0

stmt.executeQuery("select object_name from user_objects where object_type = 'TABLE'") を次のように使用することを提案するドキュメントがいくつかあります。

public static void main(String[] args) throws Exception {
    Connection conn = getOracleConnection();
    Statement stmt = null;
    ResultSet rs = null;
    stmt = conn.createStatement();
    //only for Oracle
    rs = stmt.executeQuery("select object_name from user_objects where object_type = 'TABLE'");

    while (rs.next()) {
      String tableName = rs.getString(1);
      System.out.println("tableName=" + tableName);
    }

    stmt.close();
    conn.close();
  }

ただし、これはOracleでのみ機能します

于 2013-10-16T08:36:29.817 に答える