rs
은 PreparedStatement 또는 Statement 객체의 실행으로 얻은 ResultSet이라고 가정합니다. Integer data = rs.getInt(1)
을 사용하여 ResultSet에서 정수 값을 추출하려고했지만 사장님이 Integer data = new Integer(rs.getString(1))
또는 Integer data = Integer.valueOf(rs.getString(1))
을 대신 사용하라고했습니다. 나는 그 이유를 이해하지 못한다. 누구든지 getInt
대신 getString
을 사용하면 어떤 이점이 있는지 말해 줄 수 있습니까?getInt()와 새로운 Integer (getString())의 차이점은 무엇입니까?
답변
ResultSet.getString()
은 String
개체를 반환하고 ResultSet.getInt()
은 int
값을 반환합니다.
ResultSet.getString()
모든 개체는 String
(Object.toString()
)으로 변환 될 수 있기 때문에 모든 경우에 적용됩니다. ResultSet.getInt()
은 기본 SQL 데이터 유형이 숫자이고 int
에 맞는 경우에만 작동합니다.
따라서 ResultSet.getString()
은 더 유연하지만 숫자가 이미 정수 인 경우 분명히 덜 효과적입니다. 또한 데이터베이스에 문자열로 숫자를 저장하는 경우가 적습니다 (이 변환이 필요합니다). ResultSet.getInt()
의 javadoc의 데이터가 SQL NULL의 (당신이 원하는 것이 아닐 수도 있습니다 입력해도)의 경우는 값 0
이 반환한다고 때문에
null
값은 정말 문제가되지이다. new Integer(rs.getString(1))
은 NumberFormatException
입니다.
'getInt()'를 사용할 때'NULL '값을 확인하려면'ResultSet.wasNull()'이 있습니다. –
감사합니다. icza, 내 보스는 내부 데이터베이스에서 값이 null 일 때 NumberFormatException을 검사하려고합니다. – Chris
JDBC 4.2 사양의 부록 B를 보면 모든 데이터 유형에 대해 getString이 지원되지 않는다고 가정합니다. –
필드에 SQL NULL이 포함되어 있으므로 java 정수가 java null을 보유하게 만들 수 있습니다. 기본 유형이 int
인 경우이 작업을 수행 할 수 없습니다.
열 정의를 확인할 수 있습니다. NOT NULL
제약 조건이 없기를 기대합니다.
원시 타입의 NULL 값을 확인하려면 'ResultSet.wasNull()'이 있습니다. –
Integer.valueOf (rs.getString (1))의 경우 NumberFormatException을 검사하여 예를 들어 data = null로 처리 할 수 있습니다. rs.getInt (1)의 경우 null 마커 대신 올바른 정수 "0"값을 받게됩니다. 따라서 빈 필드라는 사실을 알지 못하고 null이 필요한 경우 논리를 작성할 수 없으므로 다른 경우가 필요할 수 있습니다 처리 - 예외 또는 임의의 기본값이나 다른 "if"절 등
- 1. Java에서 (Integer) y와 새로운 Integer (y)의 차이점은 무엇입니까? 다음의 차이점은 무엇
- 2. 새로운 XMLHttpRequest()와 새로운 XMLHttpRequest - 차이점은 무엇입니까?
- 3. 새로운 stdClass()와 새로운 stdClass의 차이점은 무엇입니까?
- 4. {0}과 {0, number, integer}의 차이점은 무엇입니까
- 5. 시간()과 새로운 MongoDate() 사이의 차이점은 무엇입니까?
- 6. 이전과 새로운 유닉스 컴파일러의 차이점은 무엇입니까?
- 7. 새로운 유물 API - 인스턴스와 호스트의 차이점은 무엇입니까?
- 8. 레일즈 : ActiveRecord에서 생성과 새로운 메소드의 차이점은 무엇입니까?
- 9. Brushes.Red와 새로운 SolidBrush (Color.Red)의 차이점은 무엇입니까?
- 10. 새로운 QLabel과 그렇지 않은 QLabel의 차이점은 무엇입니까?
- 11. 두 가지 새로운 구문의 차이점은 무엇입니까?
- 12. 새로운 날짜와 + 새 날짜의 차이점은 무엇입니까?
- 13. 차이점은 무엇입니까
- 14. java에서 Integer Object의 기본값은 무엇입니까?
- 15. 아래 쿼리의 차이점은 무엇입니까?
- 16. 리스트 <Integer>과리스트 간의 차이 <? super Integer>
- 17. Integer와 Fixnum의 차이점은 무엇입니까?
- 18. 선언에서 List와 ArrayList의 차이점은 무엇입니까?
- 19. 새로운 int와 new (int) 사이의 C++의 차이점은 무엇입니까?
- 20. Bitmap.Clone()과 새로운 비트 맵 (비트 맵)의 차이점은 무엇입니까?
- 21. 새로운 Double (someString)과 Double.parseDouble (someString)의 차이점은 무엇입니까
- 22. 하늘색 공유 캐시와 새로운 하늘색 캐시의 차이점은 무엇입니까?
- 23. PlayFramework의 "새로운 양식 (A.class)"과 "양식 (A.class)"의 차이점은 무엇입니까?
- 24. Core Reporting API와 새로운 Real-Time Reporting API의 차이점은 무엇입니까?
- 25. 전통적인 Mongo 색인 방법과 새로운 텍스트 색인의 차이점은 무엇입니까?
- 26. 새로운 Class()와 ReflectionClass :: newInstance()의 차이점은 무엇입니까?
- 27. 새로운 String (byte [])과 DatatypeConverter.printBase64Binary (byte [])의 차이점은 무엇입니까?
- 28. Codeception \ Util \ Stub :: construct ('SomeClass')와 새로운 SomeClass의 차이점은 무엇입니까?
- 29. 상자 모델 버그와 새로운 상자 크기 CSS의 차이점은 무엇입니까?
- 30. ASP.Net MVC 라우팅과 새로운 ASP.Net DynamicData 사이트 라우팅의 차이점은 무엇입니까?
나는 상사에게 물어보기를 제안합니다 :) 일반적으로 이점은 없지만 데이터베이스의 int 값을 문자열로 저장하므로 캐스트해야합니다. 수동으로. – mishadoff
사장님 께 왜 동기 부여를 부탁하십시오. 모든 RDBMS가 앞서 언급 한 접근 방식을 취하는 것은 아닙니다. 어떤 사람들은 데이터베이스'NUMERIC' 타입의 데이터 타입으로부터 곧바로'getInt()'호출로부터'int'를 반환 할 수도 있습니다. 관련 RDBMS 벤더에 의해'ResultSet'의 구현에 의존합니다. 가장 좋은 방법은'ResultSetMetaData'를 사용하여 정확한 데이터 타입 매핑을 얻고 각각의 getter 메소드를 호출하는 것입니다. –
데이터베이스 열 유형에 따라 다릅니다. –