App Programming/JAVA2008. 4. 10. 13:30

제가 여기 계시글을 아무리 뒤져도 쉽게 찾을수 없어..

이렇게 글 올립니다.

오라클의 4000바이트의 제약을 뛰어넘기 위해 Long형을 썻습니다. Clob등은 쓰다가 실패..ㅡ.ㅡ

아래는 JDBC 2.0 이상에서 해당됩니다.

prepareStatement 을 선언하구요

Connection 객체를 conn 이라 치고..

content 이 컬럼이 Long 형입니다.

-- 에러 --

PreparedStatement ps = null;

String no = "1";

String title = "제목";

String content = "4000바이트 이상의 문자";


String query = "INSERT INTO YBC VALUES (no, title, content) VALUES (?,?,?)";

ps = conn.prepareStatement( query );

ps .setString(1, no );

ps .setString(2, title );

ps .setString(3, content );

ps.execute();


이렇게 썻던것을 아래처럼 바꿉니다... ㅡ.ㅡ

-- 정상 --

PreparedStatement ps = null;

String no = "1";

String title = "제목";

String content = "4000바이트 이상의 문자";


String query = "INSERT INTO YBC VALUES (no, title, content) VALUES (?,?,?)";

ps = conn.prepareStatement( query );

ps .setString(1, no );

ps .setString(2, title );

StringReader sr = new StringReader(content ); // 달랑 요기 1

ps.setCharacterStream(3, sr, content.length()); // 달랑 요기 2

ps.execute();


이것은 Insert, Update 시에 사용되구요

Select 는 기존처럼 ResultSet 에서 getString 으로 무난히 불러 올수 있습니다.

단. "SELECT NO, TITLE, CONTENT FROM YBC WHERE NO = '1'" 에서

String n = ResultSet객체.getString("NO");

String t = ResultSet객체.getString("TITLE");

String c =ResultSet객체.getString("CONTENT ");

이런식으로 select 문에 던진 컬럼들 순서대로 3번째에 getString("CONTENT") 을 가져와야 합니다.

아니면 제일 처음

String c =getString("CONTENT ");

String n = getString("NO");

String t = getString("TITLE");

이런식으로 가져오시던가요..(테이블에 Long형이 하나일때..)

그이유는.. 시간관계상 자세히 파보지 않아서 모르겠습니다..캬캬캬


지금은 다들 잘 알고 계시리라 믿지만 저처럼 찾아 헤멘 분들을 위하여

다른 설명은 없이 소스만 적었습니다..


나중에 까먹으면 다시 와서 보고 가야지.. ^^ 즐거운 저녁 되세요~



Posted by BAGE