반응형
ResultSet에 열 이름이 있는지 어떻게 확인할 수 있습니까?
ResultSet에 동적 SQL에서 반환 된 데이터가 포함되어 있으므로 ResultSet에 특정 열 이름이 포함되어 있는지 확인하는 방법이 있습니까? 예를 들어, 내가 실행 rs.getString("Column_ABC");
했지만 Column_ABC가 실제로 존재하지 않으면 예외가 발생합니다. ResultSet이 "Column_ABC"라는 열에서 데이터를 가져올 수 있는지 어떻게 테스트 할 수 있습니까?
ResultSetMetaData
수업을 사용하십시오 .
public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int x = 1; x <= columns; x++) {
if (columnName.equals(rsmd.getColumnName(x))) {
return true;
}
}
return false;
}
내가 이해하지 못하는 것은 왜이 기능이 필요한지입니다. 실행중인 쿼리 또는 저장 프로시 저는 알려진 결과를 가져야합니다. 쿼리 열을 알고 있어야합니다. 이와 같은 기능이 필요하다는 것은 어딘가에 디자인 문제가 있다는 신호일 수 있습니다.
이것이 Erick의 답변보다 다소 효율적인지 확실하지 않지만 더 쉽습니다.
String str;
try {
str = rs.getString(columnName);
} catch (java.sql.SQLException e) {
str = null;
}
/**
* returns default value if column is not present in resultset
*
* @param rs
* @param columnLabel
* @param defaultValue
* @return
*/
@SuppressWarnings("unchecked")
private static <T> T getValueFromResultSet(final ResultSet rs,
String columnLabel, T defaultValue) {
try {
return (T) rs.getObject(columnLabel);
} catch (SQLException e) {
return defaultValue;
}
}
Java 버전> = 7에서는 ResultSet # getObject 메소드에 클래스 유형을 전달하는 옵션이 있습니다.
rs.getString ( "Column_ABC") = 아무것도 아니라면 '여기에 코드를 입력하십시오.
반응형
'developer tip' 카테고리의 다른 글
HTTP 응답의 헤더 순서가 중요합니까? (0) | 2020.12.05 |
---|---|
자동 완성을위한 알고리즘? (0) | 2020.12.05 |
파일 경로에 별표 두 개 (0) | 2020.12.05 |
두 그래프 노드 사이의 모든 경로 찾기 (0) | 2020.12.05 |
Python 스크립트를 프로파일 링 할 때 호출별로 cProfile 출력 정렬 (0) | 2020.12.05 |