2013-10-16 6 views
1

JCombo Box에 테이블을 표시하는 메소드가 있습니다.Java JDBC get tables

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)); 
    } 

} 

문제는 내가 만 3라는 테이블을 가지고있다 : 범죄자, 대리인, 정보 제공자,하지만 방법은 같은 날 테이블의 모든 종류의 반환 예와 수백 _GV $ SXGG_APPLY_READER, _GV $ SXGG_APPLY_SERVER, _GV $ SXGG_CAPTURE 다른 사람의. 어떻게 필터링합니까? 여기

답변

1

될 것입니다 이런 식으로, 표준. 적절한 코드는 다음과 같습니다.

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)); 
    } 

} 
0

some doc이 stmt.executeQuery를 사용하여 제안한다 ("USER_OBJECTS에서 OBJECT_NAME 선택 어디 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(); 
    } 

이는 당으로

+0

object_name 및 user_objects가 명령에 내장되어 있습니까? – Lambros

+0

나는 오라클이 메타 데이터를 유지하는 엔티티라고 가정합니다. 커맨드가 아니기 때문에 칼럼과 테이블에 더 가깝습니다. – user1455836

0

불구하고 오라클에 대한 작동합니다 오라클 docs 의 getTables()가 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")); 
    } 

} 
+0

여전히 작동하지 않습니다. 나는 많은 관련성이없는 테이블을 다시 얻고있다 ... – Lambros

+0

@Lambros는 나의 대답에 따라 정확히 했는가? – SpringLearner