標籤:
******JAVA讀取Oracle資料庫BLOB欄位資料檔案並儲存到本地檔案******
package com.bo.test;import java.io.FileOutputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 樣本說明: * JAVA讀取Oracle資料庫BLOB欄位資料檔案並儲存到本地檔案 * 1. 使用Oracle的JDBC驅動。 * 2. BLOB欄位中儲存的是一個檔案,把BLOB欄位中儲存的內容儲存到磁碟中形成檔案。 * 程式碼片斷如下: * * @author YaoYuanbo * @emile [email protected] * */public class ReadDBIo2File {public ReadDBIo2File() {}public static void main(String args[]) {ReadDBIo2File test = new ReadDBIo2File();if (test.getDate()) {System.out.print("操作成功!");} else {System.out.print("操作異常!");}}public boolean getDate() {Connection conn = null;Statement sql = null;ResultSet rs = null;try {try {// Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// String sourceURL = "jdbc:odbc:ORDB";Class.forName("oracle.jdbc.driver.OracleDriver");String sourceURL = "jdbc:oracle:thin:@192.168.12.251:1521:oracle";String user = "hhus";String password = "hhus";conn = DriverManager.getConnection(sourceURL, user, password);sql = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);// 註:“ini”欄位為BLOB欄位String sqlstr = "select * from report_file t where t.studyid = ‘6475880‘ ";rs = sql.executeQuery(sqlstr);while (rs.next()) {String name = rs.getString("studyid");// 如下使用JdbcOdbcDriver則報錯:Hit uncaught exception// java.lang.UnsupportedOperationException// java.sql.Blob blob = rs.getBlob("ini");// 注意這裡的寫法:使用的是OracleDriveroracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("reportfile");String filepath = "C:/" + name + ".pdf";System.out.println("輸出檔案路徑為:" + filepath);try {InputStream in = blob.getBinaryStream(); // 建立輸出資料流FileOutputStream file = new FileOutputStream(filepath);int len = (int) blob.length();byte[] buffer = new byte[len]; // 建立緩衝區while ((len = in.read(buffer)) != -1) {file.write(buffer, 0, len);}file.close();in.close();} catch (Exception e) {System.out.println("I/O Exception.");return false;}}} finally {rs.close();sql.close();conn.close();}} catch (SQLException e) {System.out.println("SQLException.");return false;} catch (ClassNotFoundException e) {System.out.println("ClassNotFoundException.");return false;}return true;}}
JAVA讀取Oracle資料庫BLOB欄位資料檔案並儲存到本地檔案