일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 전화번호 형식 자동 변환
- 트리거 이벤트
- 허드슨 포트 변경
- 팝업 종료
- 탭과 클릭 focus 이벤트 구분
- #오라클 데이터 복구
- Spring Annotation
- ajax 배열 파라미터
- 엑셀 UPDATE
- javascript 낙타
- 폴더만 남기고 파일만 삭제
- javascript Camel
- 뒤로가기 방지
- 여러줄 한줄로
- i_tail
- jQuery 백스페이스
- jquery_api #jquery #api
- ajax 배열
- jquery_cheat_sheet #jquery_quick_api_reference
- eclipse properties
- DIV 팝업 이외 영역 클릭 시 팝업 닫기
- taglib 만들기
- 근무날짜 경력계산
- 시퀀스 초기화 프로시져
- css 말줄임
- JSP Standard Tag Library (JSTL) Tutorial
- eclipse 폰트
- eclipse 다국어
- 스킵 네비게이션
- 화면보호기 실행 방지
- Today
- Total
Hi~ Summers!!
자바를 이용한 BLOB CLOB조작법 본문
1) import 시켜야할 API
① oracle.sql.BLOB
② oracle.sql.CLOB
③ oracle.jdbc.driver.OracleResultSet
2) CLOB
① DB에 CLOB 데이터형 쓰기
// UPDATE 또는 INSERT 명령으로 DB 에 공간 확보
String query = "UPDATE TABLE SET CLOB_DATA = EMPTY_CLOB() " ;
stmt.executeUpdate(query);
// 그런 다음 다시 요놈을 다시 SELECT
query = "SELECT CLOB_DATA FROM TABLE WHERE ~ " ;
stmt = dbConn.createStatement();
rs = stmt.executeQuery(query);
if(rs.next()) {
CLOB clob = null;
Writer writer = null;
Reader src = null;
char[] buffer = null;
int read = 0;
clob = ((OracleResultSet)rs).getCLOB(1);
writer = clob.getCharacterOutputStream();
// str -> DB에 넣을 내용
src = new CharArrayReader(str.toCharArray());
buffer = new char[1024];
read = 0;
while ( (read = src.read(buffer,0,1024)) != -1) {
writer.write(buffer, 0, read); // write clob.
}
src.close();
writer.close();
}
dbConn.commit();
dbConn.setAutoCommit(true);
② DB에서 CLOB 데이터형 읽기
// SELECT
String query = "SELECT CLOB_DATA FROM TABLE WHERE ~ " ;
stmt = dbConn.createStatement();
rs = stmt.executeQuery(query);
if(rs.next()) {
StringBuffer output = new StringBuffer();
Reader input = rs.getCharacterStream("CLOB_DATA");
char[] buffer = new char[1024];
int byteRead = 0;
while((byteRead=input.read(buffer,0,1024))!=-1){
output.append(buffer,0,byteRead);
}
// contents -> CLOB 데이터가 저장될 String
String contents = output.toString();
}
dbConn.commit();
dbConn.setAutoCommit(true);
3) BLOB
① DB에 BLOB 데이터형 쓰기
// UPDATE 또는 INSERT 명령으로 DB 에 공간 확보
String query = "UPDATE TABLE SET BLOB_DATA = EMPTY_BLOB() " ;
stmt.executeUpdate(query);
// 그런 다음 다시 요놈을 다시 SELECT
query = "SELECT BLOB_DATA FROM TABLE WHERE ~ " ;
stmt = dbConn.createStatement();
rs = stmt.executeQuery(query);
if(rs.next()) {
BLOB blob = null;
BufferedOutputStream out = null;
BufferedInputStream in = null;
byte[] buf = null;
int bytesRead= 0;
blob = ((OracleResultSet)rs).getBLOB(1);
out = new BufferedOutputStream(blob.getBinaryOutputStream());
// str -> DB에 넣을 내용
in = new BufferedInputStream(new StringBufferInputStream(str));
int nFileSize = (int)str.length();
buf = new byte[nFileSize];
while ((bytesRead = in.read(buf)) != -1){
out.write(buf, 0, bytesRead);
}
in.close();
out.close();
}
dbConn.commit();
dbConn.setAutoCommit(true);
② DB에서 BLOB 데이터형 읽기
// SELECT
String query = "SELECT CLOB_DATA FROM TABLE WHERE ~ " ;
stmt = dbConn.createStatement();
rs = stmt.executeQuery(query);
if(rs.next()) {
BLOB blob = ((OracleResultSet)rs).getBLOB(1);
BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());
int nFileSize = (int)blob.length();
byte[] buf = new byte [nFileSize];
int nReadSize = in.read(buf, 0, nFileSize);
in.close();
// contents -> BLOB 데이터가 저장될 String
String contents = new String(buf);
}
dbConn.commit();
dbConn.setAutoCommit(true);