2010-01-15 3 views
17

ResultSet의 형식을 지정하여 CSV 파일로 출력합니다. 따라서 텍스트 또는 숫자인지 여부를 아는 것 이상의 결과 집합의 Java 유형에 대해서는 신경 쓰지 않습니다.JDBC ResultSet getString은 항상 String 표현을 반환합니까?

getString은 항상 단일 값에 대해 값의 문자열 표현을 제공합니다 (나는 java.sql.Types.ARRAY, java.sql.Types.JAVA_OBJECT 및 몇 가지 다른 것들에 대해 신경 쓸 필요가 없습니다).

resultSetMetaData.getColumnType(i)Types.FLOAT 또는 Types.BIGDECIMAL입니다. rs.GetString(i) 항상 일부 문자열을 얻을 것인가?

즉 getString이 SQLException을 throw하거나 getXXX가 나에게 값을 주면 null을 반환합니까?

답변

11

그래,이를 확인 : http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

JDBC는 지금까지 당신이 다른 SQL 유형을 검색하는 데 사용할 수있는의 getXXX 방법으로 위도가 많이 있습니다. 예를 들어, getInt 메소드를 사용하여 숫자 또는 문자 유형을 검색 할 수 있습니다. 검색 한 데이터는 int로 변환됩니다. 즉, SQL의 형태가 VARCHAR의 경우, JDBC는 VARCHAR로부터 정수를 구문 분석하려고합니다. 그러나 getInt 메소드는 SQL INTEGER 유형 만 검색하는 것이 좋으며 BINARY, VARBINARY, LONGVARBINARY, DATE, TIME 또는 TIMESTAMP SQL 유형에는 사용할 수 없습니다.

하지만 JDBC 드라이버가 다를 경우 다른 결과가 발생할 수 있습니다.

+0

** 링크 된 가이드의 갱신 : **'getString 메소드가 SQL 형 CHAR 및 VARCHAR의 취득에 추천되고 있습니다 만, 그것과 함께 모든 기본적인 SQL 형을 취득 할 수 있습니다. getString으로 모든 값을 얻는 것은 매우 유용 할 수 있지만 한계도 있습니다. 예를 들어 숫자 형을 검색하는 데 사용되는 경우 getString은 숫자 값을 Java String 객체로 변환하며 숫자를 숫자로 조작하기 전에 값을 숫자 유형으로 다시 변환해야합니다. 어쨌든 값을 문자열로 처리하는 경우에는 단점이 없습니다. ' – Nefreo

5

java.lang.String은 최종 클래스입니다. 서브 클래스를 가질 수는 없습니다. 따라서 String을 반환하는 메서드는 java.lang.String 클래스 또는 null 클래스의 인스턴스를 반환하거나 예외를 throw합니다.

변환의 경우, 비 String 유형에서 변환 할 수있게하려면 JDBC 드라이버가 결정합니다. 나는 많은 사람들이 그것에 문제가있을 것이라고 생각한다.

난 당신이 대신 할 것을 제안 : 분별있는 일을 항상 것보다 강력한해야

Object item = resultSet.getObject(i); 
String strValue = (item == null ? null : item.toString()); 

, getObject() 때문이다.

+0

또는 SQLException을 던집니다. – kdgregory

+3

그리고 그 질문은 getString이 SQLException을 던지거나 getXXX가 나에게 값을 줄 때 null을 반환하는 경우입니까? – Anonym

관련 문제