오라클 VARCHAR에 2000바이트이상 입력이 안될때 Java
2008/11/21 17:04
http://blog.naver.com/dici11/100057479853
컬럼을 VARCHAR 2000바이트 이상으로 선언하고
PreparedStatement로 인서트나 업데이트를 하는경우
2000바이트이상 입력이 안됩니다.
이유는 setString()메소드가 2000바이트이상 입력을 못받아서 발생하는것!!!!
2000바이트 이상일 경우는 setString을 사용하시면 안되시고
setCharacterStream()메소드를 이용하시기바랍니다.
setCharacterStream(int parameterIndex, Reader reader, int length)
==============================================================================
예제
String test = "2000바이트이상일경우"; //입력할 값
pstmt.setString(test); //2000바이트이상일경우 여기서 익셉션떨어져용~~
String test = "2000바이트이상일경우"; //입력할 값
StringReader sr = new StringReader(test);
pstmt.setCharacterStream(2, sr, test.length());
요렇게 바꿔주심됩니다.
고찰
제 생각에는 자바에서는 Connection와 PreparedStatement인터페이스만 제공하기 때문에
DB provider의 jdbc드라이버 버전에 따라 될 수도 있고 안될수도 있을것같음 (현재 오라클 9i사용)
PreparedStatement인터페이스를 상속받아
setString메소드안에서 파라미터로 들어온 String의 길이에 따라 2000바이트가 넘는다면
setCharacterStream()으로 넘겨주는 로직을 넣어서 사용하면 좋을것같음
[출처] 오라클 VARCHAR에 2000바이트이상 입력이 안될때|작성자 아이고
'DataBase' 카테고리의 다른 글
[DB] DBMS별 유용한 함수 (0) | 2013.01.15 |
---|---|
[Oracle] 코어 오라클 데이터베이스 스터디 (0) | 2011.09.20 |
[DB] Oracle - DB사이즈 확인 (0) | 2011.03.08 |
[DB] Connecton pool (0) | 2011.03.03 |
[Mssql] 클라이언트 다운 (0) | 2011.02.21 |