[JSP]Oracle CLOB 사용

2013. 12. 7. 17:27WEB/JSP(JAVA)



반응형

CLOB 는 Oracle에 존재하는 필드타입이다.

함수가 아님...


오라클버전에 따라 다루는 방법도 다르기 때문에 검색이 필요하다.


1. 일단 DB에 저장하는 방법은 CLOB 데이터필드 컬럼을 empty_clob() 로 넣어준다.


EX )

INSERT INTO CLOBTABLE ( CLOB_COLUMN) VALUES ( empty_clob() ) ;


2. select clob_column from table_name where = 조건  for update 로 락을 걸어준다.


3.  con.setAutoCommit(false) 데이터 삽입을 처리하기위해 설정해주고  받아온 column을 ResultSet 에 rs.getClob()로 통한 받아와 getCharacterOutputStream 통해 writer 를 해준다


ex) rs= pstmt.executeQuery(sql)  if (rs.next()){ Clob clob = rs.getClob(clob_column); BufferedWriter bw = ((CLOB)clob).getCharacter OutputStream(); bw.write(값) bw.close(); 


4. 마지막에 다시 rs.close() 등을 해주고 setAutoCommit(true) 해준다.



----------------------------------------------------------------------------------------------------------------------


CLOB 데이터를 읽어오기위해서는


1. select clob_column from table_name where =조건   이걸 Resultset 에담아줌 


EX )

StringBuffer sb =new StringBuffer(); 

Reader rd = rs.getCharacterStream("clob_column");

char [] buff =new char[1024];

int i;

while (i = rd.read(buff.0.1024)) ! = -1) {

sb.append(buff,0, i ));

}


2. 이런식으로 CLOB 데이터를 불러오기 위해서 rs.getCharacterStream("clob_column") 담아줘서 스트링버퍼에 담아 불러와야한다.



TIP) ibatis 를 통해 Oracle CLBO Stirng 으로 가저올려면 간단하다 


CLOB clob =(CLOB) rs.get("clob_column");

Reader rd =clob.getCharacterStream();

   StringReader(rs.getString("clob_column")));

StringBuffer sb = new StringBuffer();

char[] buf = new char[1024];

int readcount;

while ((readcount = rd.read(buf, 0, 1024)) != -1) {

sb.append(buf, 0, readcount);

}

rd.close();

}

// retrun sb.toString();


끝~











반응형

'WEB > JSP(JAVA)' 카테고리의 다른 글

[자바]JAVA null 체크 + java.lang.NullPointerException  (17) 2014.01.13
이클립스 svn Compare with Each Other  (0) 2014.01.06
Eclipse SVN 날짜, 유저 설정  (1) 2013.12.05
[JSP]jsp include  (1) 2013.09.27
jsp session 세션  (2) 2013.09.27