[Java] java.sql.ResultSetMetaData

Published: by Creative Commons Licence

참고 문서

메타 데이터란 저장된 데이터 그 자체는 아니지만, 해당 데이터에 대한 정보를 갖고 있는 데이터를 의미한다. 즉, DB 내의 데이터에 대한 데이터의 소유, 데이터의 크기에 관련된 정보들이다.

ResultSetMetaData는 SQL로 받아온 데이터의 정보를 조회/출력하는 용도로 사용된다. ResultSet 인터페이스 객체의 getMetaData() 를 호출하여 ResultSetMetaData 인터페이스 객체를 얻으면 해당 ResultSet과 관련된 메타 데이터를 얻을 수 있다.

String strQuery = "Select 필드_명  FROM 테이블_명";

ResultSet rs = stmt.executeQuery(strQuery); // stmt : Statement 객체
ResultSetMetaData resultMetaData = rs.getMetaData();
int cols = resultMetaData.getColumnCount(); // 필드 수 구하기

주요 메서드

  • getCatalogName(int column): 주어진 컬럼의 이름을 돌려준다.
  • getColumnClassName(int column): 주어진 컬럼의 객체를 저장할 때 사용되는 자바 클래스 이름을 돌려준다.
  • getColumnCount(): 컬럼의 개수를 돌려준다.
  • getColumnDisplaySize(int column): 주어진 컬럼의 최대 문자 개수를 돌려준다.
  • getColumnLabel(int column): 주어진 컬럼의 권장 타이틀을 돌려준다.
  • getColumnName(int column): 주어진 컬럼의 이름을 돌려준다.
  • getColumnType(int column): 주어진 컬럼의 SQL 타입을 돌려준다. 반환하는 값은 java.sql.Types에 정의된 상수이다.
  • getColumnTypeName(int column): 주어진 컬럼의 DB에 종속된 이름을 돌려준다.
  • getTableName(int column): 주어진 컬럼이 속한 테이블 이름을 돌려준다.
  • isReadOnly(int column): 주어진 컬럼이 읽기 전용인지 알려준다.

example

쿼리 결과의 메타데이터 출력

String sql = "select * from SCORE";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

ResultSetMetaData rsmd = rs.getMetaData();

int cols = rsmd.getColumnCount(); //컬럼의 총개수

for (int i = 1; i <= cols; i++) {
    System.out.print(rsmd.getColumnName(i) + "\t"); //컬럼명 출력
}

while (rs.next()) {
    for (int i = 1; i <= cols; i++) {
        System.out.print(rs.getString(i) + "\t");
    }
}