본문 바로가기
Programming/DataBase

ResultSetMetaData

by 막이 2012. 9. 17.

보통 PrepareStatement 클래스에서 executeQuery메소드( SELECT문 )을 사용하여

ResultSet 객체를 받아낸다.

여기에느 각 행의 값들이 들어 있는데

컬럼명이나, 속성타입, 속성의 길이 같은 정보는 없다.

이것을 추출 할 수 있는 클래스가 ResultSetMetadata 이다.

ResultSetMetadata

ResultSet의 메소드 getMetaData(); 로 뽑아 낼수있다.

ResultSetMetadata rsmd = rs.getMetaData();

ResultSetMetadata는 다음과 같은 메소드 들을 가지고있다.

int getColumnCount() //컬럼의 갯수 리턴

String getColumnLabel(int index) // index의 컬럼명(이것은 Select aa as BB) 같은 경우 BB를 의미한다.

String getColumnName(int index) // index의 컬럼명(이것은 Select aa as BB) 같은 경우 aa를 의미한다.

int getColumnType(int index) // index의 컬럼타입의 정수형(ex VARCHAR는 12다.)

java.sql.Types.VARCHAR //Types 클래스에 상수형태로 저장되어있다.

String getColumnTypeName(int index)// index의 컬럼타입을 직접저인 문자로 리턴함.

int getColumnDisplaySize(int index)//index의 컬렘에 지정된 데이터 길이를 리턴한다.

소스 (Connection conn 은 생성되었다고 가정하고 한다.)

String sql = "SELECT * FROM sungjuk";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
//System.out.println(count);
for(int i=1 ; i<=count ; i++){
System.out.print(rsmd.getColumnLabel(i) + "["); //as 로 지정한 임의 컬럼명
System.out.print(rsmd.getColumnName(i) + "] --> ");
System.out.print(rsmd.getColumnType(i) + "(");
System.out.print(rsmd.getColumnTypeName(i) + ") --> ");
System.out.println(rsmd.getColumnDisplaySize(i));
}