[JSP] Oracle BLOB Data handling

BLOB Data insert or update
==========================

1) 필수 import Class

import oracle.sql.CLOB;
import oracle.sql.BLOB;
import oracle.jdbc.driver.OracleResultSet;

2) Method 내(try~catch안)에 필수 포함 step (맨 처음에)
conn.setAutoCommit(false); // Auto commit을 비활성화 시킴.

3) Data 처리

-. insert or update sql 을 정상처리 한다.
BLOB Data Column 은 empty_BLOB() 으로처리

-. key 값으로 방금 insert or update 한 record 를 불러온다.
주) sql 마지막에 for update 라고 coding 하여 BLOB Data 처리 SQL 임을 나타낸다.

-. if 문안을 아래와 같이 처리한다.

if (rs.next()) {
BLOB blob = ((OracleResultSet)rs).getBLOB("" 혹은 sql 검색 순번);
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
File FilePath = new File("");
FileInputStream fis = new FileInputStream(FilePath);
BufferedInputStream bis = new BufferedInputStream(fis);

int size = blob.getBufferSize();
byte[] buffer = new byte[size];

int len = -1;
while ( (len = bis.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();

bis.close();
fis.close();
out.close();
}

rs.close();

4) Method내(try~catch안)에 필수 포함 step (맨 마지막에)
conn.setAutoCommit(true); // Auto commit을 활성화 시킴.


BLOB Data select
================

1) Data 처리

SQL에서 BLOB column을 getCharacterStream으로 얻어온 후 아래의 Method를 Call 한다.


public static String readBlobData(Reader reader) throws IOException
{
String r = "";
int cnt = 0;

if(reader!=null) {
while((cnt=reader.read()) != -1) {
r=r+(char)c;
}
}
return r;
}

예) String result_blob=""; ResultSet rs=null;
PreparedStatement stmt=null;

rs=stmt.executeQuery("select blob_data from blob_table where <조건>");
result_blob=readBlobData(rs.getCharacterStream(1));

댓글

이 블로그의 인기 게시물

[MSSQL] 데이터베이스가 사용 중이어서 배타적으로 액서스할 수 없습니다

[LINUX] CentOS 부팅시 오류 : UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

구글코랩) 안전Dream 실종아동 등 검색 오픈API 소스를 공유합니다. (구글드라이브연동, 이미지 수집 소스)