오라클 에서 bfile에 저장하고 읽어 오는 예제
CREATE DIRECTORY TEST_DIR AS 'c:/temp/filedir'
CREATE TABLE test_dir_table (x varchar2 (30), b bfile
INSERT INTO test_dir_table values('1', bfilename(TEST_DIR, 'test.jpg') )
먼저 오라클 서버에 /temp/filedir 디렉토리를 만들고 test.jpg 라는 파일을 넣고 위와 같이 등록한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="oracle.sql.BFILE"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="oracle.jdbc.driver.OracleResultSet"%>
<%@page import="oracle.jdbc.pool.OracleDataSource"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="oracle.sql.BFILE"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="oracle.jdbc.driver.OracleResultSet"%>
<%@page import="oracle.jdbc.pool.OracleDataSource"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
try{
OracleDataSource ods = new OracleDataSource();
ods.setDriverType("thin");
ods.setServerName("localhost");
ods.setDatabaseName("oracle10");
ods.setPortNumber(1521);
ods.setUser("scott");
ods.setPassword("tiger");
Connection con = ods.getConnection();
con.setAutoCommit( false );
String query = "select * from test_dir_table";
PreparedStatement stmt = con.prepareStatement( query );
ResultSet rset = stmt.executeQuery();
BFILE bfile = null;
while( rset.next() ) {
bfile = ((OracleResultSet)rset).getBFILE(2);
}
rset.close();
stmt.close();
bfile.openFile();
OracleDataSource ods = new OracleDataSource();
ods.setDriverType("thin");
ods.setServerName("localhost");
ods.setDatabaseName("oracle10");
ods.setPortNumber(1521);
ods.setUser("scott");
ods.setPassword("tiger");
Connection con = ods.getConnection();
con.setAutoCommit( false );
String query = "select * from test_dir_table";
PreparedStatement stmt = con.prepareStatement( query );
ResultSet rset = stmt.executeQuery();
BFILE bfile = null;
while( rset.next() ) {
bfile = ((OracleResultSet)rset).getBFILE(2);
}
rset.close();
stmt.close();
bfile.openFile();
InputStream instream = bfile.getBinaryStream();
BufferedInputStream bfis = new BufferedInputStream( instream );
out.clear();
out=pageContext.pushBody();
BufferedInputStream bfis = new BufferedInputStream( instream );
out.clear();
out=pageContext.pushBody();
BufferedOutputStream bfos = new BufferedOutputStream( response.getOutputStream() );
byte bytes[] = new byte[4096];
int read = 0;
try{
while( ( read = bfis.read( bytes ) ) != -1 ) {
bfos.write( bytes );
}
}catch ( Exception e ){
throw new Exception();
}finally{
if( instream != null ) {
instream.close();
}
if( bfis != null ) {
bfis.close();
}
byte bytes[] = new byte[4096];
int read = 0;
try{
while( ( read = bfis.read( bytes ) ) != -1 ) {
bfos.write( bytes );
}
}catch ( Exception e ){
throw new Exception();
}finally{
if( instream != null ) {
instream.close();
}
if( bfis != null ) {
bfis.close();
}
if( bfos != null ) {
bfos.close();
}
bfos.close();
}
}
ods.close();
con.close();
}catch( Exception ex ){
System.out.println( ex.toString() );
}
%>
</body>
</html>
오라클자바 커뮤니티 실무강좌 - 개인 80% 환급
댓글 없음:
댓글 쓰기