보통 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));
}
'Programming > DataBase' 카테고리의 다른 글
ORA-00911: 문자가 부적합합니다 (0) | 2012.09.25 |
---|---|
트랜잭션(transaction) 이란? (0) | 2012.09.17 |
오라클 sqlplus 화면설정하기(pagesize, linesize) (0) | 2012.04.25 |
java 고급과정 10일차 (0) | 2012.03.16 |
java 고급과정 9일차 (0) | 2012.03.15 |