2013년 9월 5일 목요일

오라클 에서 bfile에 저장하고 읽어 오는 예제

오라클 에서 bfile에 저장하고 읽어 오는 예제, 오라클자바커뮤니티강좌, 오라클강좌

오라클 에서 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>
 <%
    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();
        InputStream instream = bfile.getBinaryStream();
   
        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();
           }
           if( bfos != null ) {
               bfos.close();
          }
    }
 
    ods.close();
    con.close();
   }catch( Exception ex ){
        System.out.println( ex.toString() );
  }
%>
</body>
</html>

댓글 없음:

댓글 쓰기