zoukankan      html  css  js  c++  java
  • JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件

    ******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 619576123@qq.com
     *
     */
    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");
    
    					// 注意这里的写法:使用的是OracleDriver
    					oracle.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;
    	}
    }
    

      

  • 相关阅读:
    centos shell运行报语法错误: 未预期的文件结尾
    腾讯云防暴力破解防异地登陆
    centos常用命令
    centos7安装nginx
    JavaScript数组倒序函数reverse()
    Ecshop首页购物车数量调取问题
    (原)IPhone开发时把ToolBar中的元素居中的技巧
    iphone开发常用代码笔记
    Windows环境下使用Apache+mod
    [转]C++中sizeof(struct)怎么计算?
  • 原文地址:https://www.cnblogs.com/forever2698/p/4747349.html
Copyright © 2011-2022 走看看