2013-05-24 2 views
0

Eclipse의 SQL Server 2005에서 referenced_object_id 대신 테이블 이름을 가져와야합니다. 그 그렇게 수행하지만받지 테이블 이름 :java의 sys.tables에서 테이블 이름을 가져 오는 방법은 무엇입니까?

Statement smt = con.createStatement(); 
      smt.executeQuery("SELECT * from table_references"); 
      ResultSet rs = smt.getResultSet(); 

      while (rs.next()) { 
       String column1 = rs.getString("referenced_object_id"); 
       String column2 = rs.getString("name"); 
       String column3 = rs.getString("parent_column_id"); 
       String column4 = rs.getString("referenced_column_id"); 

       String sql = "SELECT name from sys.tables WHERE object_id='" + column1 + "'"; 

       System.out.println(column1 + " | " + column2 + " | " + column3 + " | " + column4); 
+0

무엇이 문제입니까? 스 니펫에서 데이터베이스를 쿼리하지 않고 단지'sql' 쿼리 문자열을 – beny23

+0

으로 만드시겠습니까? 질문을 덜 혼란스럽게 만드시겠습니까? http://stackoverflow.com/questions/10784861/how-can-i-get-tables-name-from-sys-tables-and-store-the-output-in-a-variable에서 몇 가지 SQL 예제를 볼 수 있습니다. – fGo

+0

고정 된 질문. –

답변

1

당신은 테이블의 이름을 얻기 위해 데이터베이스에서 메타 데이터를 얻을 필요가있다. http://docs.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getTables%28java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String%5b%5d%29 - -

DatabaseMetaData meta = conn.getMetaData(); 
ResultSet rs = meta.getTables(null, null, "%", null); 
while (rs.next()) { 
    System.out.println(rs.getString(3)); 
} 

는보고 여기 가지고 당신을 도움이 될 것입니다.

+0

'Collection classes = owlModel.getUserDefinedOWLNamedClasses(); (; it.hasNext();는 classes.iterator을() = 반복자) 용 \t \t \t \t \t { \t OWLNamedClass의 CLS의 = (OWLNamedClass) it.next는(); \t \t \t cls.getName(); \t \t \t \t \t \t \t smt.executeQuery ("나라 SELECT * FROM"); \t \t \t \t ResultSet rs2 = smt.getResultSet(); \t \t \t \t 동안 (rs2.next()) { \t \t \t \t \t 문자열 COL = rs.getString ("COUNTRYNAME"); \t \t \t \t \t cls.createOWLIividual (col); \t \t \t \t \t \t} \t'com.microsoft.sqlserver.jdbc.SQLServerException : 결과 세트가 폐쇄된다. 임 너무 오류가 점점 –

+0

문제는 당신이 resulset를 사용하는 방식에서 비롯됩니다. 'getResultset'의 javadoc에 따라 _ 현재 결과를 ResultSet 객체로 반환합니다. 이 메소드는 결과마다 한 번만 호출해야합니다 ._. 그래서, 대신이 일을 : 'smt.executeQuery ("SELECT * FROM Country"); ResultSet rs2 = smt.getResultSet();' 다음을 사용하십시오 : 'ResultSet rs2 = smt.executeQuery ("SELECT * FROM Country"); – fGo

관련 문제