02.Oracle/DataBase2009. 1. 30. 20:08
반응형

우선 BLOB, CLOB을 DB에서 SELECT 해서 사용하는

몇가지 용법에 관해서 가장 low level의 코드로 살펴볼게요.

1. Class.forName("oracle.jdbc.driver.OracleDriver");
2. Connection             conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:merong", "admin", "1234");
3. Statement stmt = conn.createStatement();
4. ResultSet rset = stmt.executeQuery("SELECT blob_col, clob_col FROM test_table");
5. while(rset.next())

여기까지는 다 아시는 사항일테고...

이제부터 BLOB과 CLOB을 나누어서 한번 살펴보겠습니다.

1. BLOB 데이터를 읽어서 파일로 생성하는 경우
BLOB blob = ((OracleResultSet)rset).getBLOB(1);
InputStream input = blob.getBinaryStream();
FileOutputStream fOut = new FileOutputStream("C:/temp/xml/test.xml");
byte[] buffer = new byte[10];
int nbytes = 0;
while((nbytes = input.read(buffer)) != -1) {
   fOut.write(buffer, 0, nbytes);
}
fOut.flush();
fOut.close();
input.close();

2. BLOB 데이터를 읽어서 문자열로 처리하는 경우
BLOB blob = ((OracleResultSet)rset).getBLOB(1);
InputStream input = blob.getBinaryStream();
StringWriter strWriter = new StringWriter();
int ch = 0;
while((ch = input.read()) != -1) {
   strWriter.write(ch);
}
input.close();
System.out.println(strWriter.getBuffer().toString());

3. CLOB 데이터를 읽어서 문자열로 처리하는 경우
StringBuffer output = new StringBuffer();
Reader input = rset.getCharacterStream("CLOB_COL");
char[] buffer = new char[1024];
int byteRead;
while((byteRead=input.read(buffer,0,1024))!=-1){
   output.append(buffer,0,byteRead);
}
input.close();
System.out.println(output.toString());

어때요? 간단하죠?

출처 : http://www.fog.pe.kr/ktt/index.php?page=2

Posted by 1010