필자는 여태껏 ResultSet에서 받은 값의 메타데이터를 사용할 때, 맵의 키로써 getColumnName()를 주로 사용했다.
그런데 다른 사람의 코드를 살펴보니 getColumnLabel() 이라는 메서드를 나와 같은 목적으로 사용하고 있었다.
이 둘의 차이는 무엇이며, 추가로 메타데이터의 메서드는 각각 어떤 역할을 맡을까?
ex)
SELECT name AS myName FROM myTable;
ex)
SELECT name AS myName FROM myTable;
ResultSet rs = stmt.executeQuery() // stmt는 이미 있다고 가정
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
int columnType = metaData.getColumnType(1);
java.sql.Types 클래스의 상수Types.INTEGER , Types.BIGINT , Types.BOOLEAN , Types.TIMESTAMP ...int columnTypeName = metaData.getColumnTypeName(1);
column = 1 -> INTEGER , column = 2 -> VARCHAR ...int displaySize = metaData.getColumnDisplaySize(1);
VARCHAR(255) -> 255 , INTEGER -> 10 ...int isNullable = metadata.isNullable(1);
ResultSetMetaData.columnNullable -> NULL 허용ResultSetMetaData.columnNoNulls -> NULL 비허용ResultSetMetaData.columnNullableUnknown -> NULL 허용 여부 알 수 없음boolean isAutoIncrement = metaData.isAutoIncrement(1);
ResultSet 이나 ResultSetMetaData 에서 0번 컬럼을 파라미터로 넣고 호출하면 SQLException 발생0 부터 시작하는 프로그래밍 언어(java ...)의 배열 인덱스를 섞어서 사용할 경우 혼란이 발생할 수 있음java 같은 프로그래밍 언어의 배열 및 컬렉션 인덱스는 보통 0 부터 시작SQL 에서는 컬럼 번호가 1 부터 시작해야 함1 부터 시작참고) OpenAI. (2024).ChatGPT(4o)[Large language model].https://chatgpt.com/