2012-07-16 1 views
10

을 통해 기본 키의 열 이름을 얻을 : rs.next() 항상 false을 반환하면서방법은 다음과 나는 코드가 JDBC

DatabaseMetaData dmd = connection.getMetaData(); 
ResultSet rs = dmd.getPrimaryKeys(null, null, tableName); 

while(rs.next()){ 
    primaryKey = rs.getString("COLUMN_NAME"); 
} 

RS가 null는 아니고, 사람이 그것에 대해 생각이있다? 감사.

+2

를 검색 할 getCrossReference의 또는 getImportedKeys을 사용할 수 있습니다

 DatabaseMetaData dm = conn.getMetaData(); ResultSet rs = dm.getExportedKeys("" , "" , "table1"); while(rs.next()) { String pkey = rs.getString("PKCOLUMN_NAME"); System.out.println("primary key = " + pkey); } 

아래의 접근 방식에서 대소 문자를 구분합니다 너 사용하고있어? 모든 드라이버/DB 엔진이 jdbc에서 medatada를 읽는 것을 지원하지는 못하기 때문입니다. – Augusto

+0

일반적으로 ** ResultSetMetaData ** (http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html)를 사용합니다. 귀하의 요구 사항에 적합한 방법을 찾지 못했습니다. – ManuPK

+1

@ManuPK이 경우'DatabaseMetaData'는 올바른 클래스입니다. –

답변

3
  1. 드라이버 공급 업체가 메타 데이터 인터페이스 구현을 구현했습니다. 그것은 일부 드라이버 및 일부 DB에서 지원하지 않을 수 있습니다. 다음은 javadoc의 텍스트입니다. 일부 DatabaseMetaData 메소드는 ResultSet 객체 형식으로 정보 목록을 반환합니다. getString 및 getInt와 같은 일반 ResultSet 메소드를 사용하여 이러한 ResultSet 객체에서 데이터를 검색 할 수 있습니다. 지정된 형식의 메타 데이터를 사용할 수없는 경우 빈 ResultSet가 리턴됩니다.

  2. 테이블 이름은 오라클

  3. 또는 시도 당신은 또한 DB 엔진은 어떤 기본 키

+0

기본 유형을 가져 오는 방법이 있습니까? 열쇠도? – Zaheer

관련 문제