`
jslfl
  • 浏览: 323767 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC 操作 oracle blob

阅读更多
jdbc 插入、读取oracle blob字段

package com.ssgm.jyu.jdbc;
import java.io.*;
import java.sql.*;

import oracle.sql.*;
import oracle.jdbc.*;

public class JdbcBlob {
    public static void main(String[] args){
        Connection conn = null;
        Statement stmt = null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
        }
        catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        
        try{
            conn = DriverManager.getConnection("jdbc:oracle:thin:@Host:1521:SID","username","passwd");
            stmt = conn.createStatement();
            conn.setAutoCommit(false);
            String sourceDir = "C:\\temp\\";
            String targetDir = "C:\\temp\\retrieved\\";
            String fileName = "cbr_order_version.dmp";
            System.out.println("Writing BLOB to blob_content...");
            writeBLOB(stmt,sourceDir+fileName);
            System.out.println("Reading BLOB from blob_content...");
            readBLOB(stmt,fileName,sourceDir,targetDir);
        }
        catch(SQLException e){
            e.printStackTrace();
        }
        finally{
            try{
                stmt.close();
                conn.close();
            }
            catch(SQLException e){
                e.printStackTrace();
            }
        }
       }
        
        public static void writeBLOB(Statement stmt, String fullName){
            ResultSet blobRS = null;
            try{
                String sqlInsert = "INSERT INTO blob_content VALUES ('"+fullName+"',EMPTY_BLOB())";
                String sqlSelect = "SELECT blob_column FROM blob_content WHERE file_name='"+fullName+"' FOR UPDATE";
                
                //step1: initialize the LOB column to set the LOB locator                
                stmt.executeUpdate(sqlInsert);
                
                //step2: retrieve the row containing the LOB locator
                blobRS = stmt.executeQuery(sqlSelect);
                blobRS.next();
                
                //step3: create a LOB obj and read the LOB locator
                BLOB myBlob = ((OracleResultSet) blobRS).getBLOB("blob_column");
                
                //step4: get the chunksize of the LOB from the LOB object
                int chunkSize = myBlob.getChunkSize();
                
                //step5: create a buffer to hold a block of data from the file
                byte[] byteBuffer = new byte[chunkSize];
                
                //step6: create a file obj to open the file
                File file = new File(fullName);
                
                //step7: create an input stream obj to read the file contents
                FileInputStream in = new FileInputStream(file);
                
                //step8: read the file contents and write it to the LOB
                long position = 1;
                int bytesRead;
                
                while((bytesRead = in.read(byteBuffer)) != -1){
                    //write the buffer contents to myBlob
                    myBlob.setBytes(position, byteBuffer);
                    position += bytesRead;
                }
                
                //step9: commit
                stmt.execute("COMMIT");
                
                //step10: close the objects used to read the file
                in.close();
                blobRS.close();
                
                System.out.println("Wrote content from "+fullName+" to BLOB\n");
            }
            catch(SQLException e){
                System.out.println("Error Code: "+e.getErrorCode());
                System.out.println("Error Message: "+e.getMessage());
                e.printStackTrace();
            }
            catch(IOException e){
                System.out.println("Error Message: "+e.getMessage());
                e.printStackTrace();
            }
        }
        

        public static void readBLOB(
                Statement stmt,
                String fileName,
                String sourceDir,
                String targetDir){
            String sqlSelect = "SELECT blob_column FROM blob_content WHERE file_name='"+
              sourceDir+fileName+"'";
            ResultSet blobRS = null;
            try{
                //step1: retrieve the row containing the BLOB locator
                blobRS = stmt.executeQuery(sqlSelect);
                blobRS.next();
                
                //step2: create a LOB obj and read the LOB locator
                BLOB myBlob = ((OracleResultSet) blobRS).getBLOB("blob_column");
                
                //step3: get the chunk size of the LOB from the LOB obj
                int chunkSize = myBlob.getChunkSize();
                
                //setp4: create a buffer to hold a chunk of data from LOB
                byte[] byteBuffer = new byte[chunkSize];
                
                //step5: create a file obj
                String saveFile = targetDir + "retrievedBLOB"+fileName;
                File file = new File(saveFile);
                
                //step6: create output stream obj to write the LOB contents
                FileOutputStream out = new FileOutputStream(file);
                
                //step7: get the long of LOB contents
                long blobLength = myBlob.length();
                
                //step8: read a chunk of data from myBlob,
                //then write the buffer contents to file
                for (long position=1; position<=blobLength; position += chunkSize){
                    int bytesRead = myBlob.getBytes(position, chunkSize, byteBuffer);
                    out.write(byteBuffer);
                }
                
                //step9: close the stream obj
                out.close();
                
                System.out.println("Read BLOB and save file"+saveFile);
            }
            catch(SQLException e){
                System.out.println("Error Code: "+e.getErrorCode());
                System.out.println("Error Message: "+e.getMessage());
                e.printStackTrace();
            }
            catch(IOException e){
                System.out.println("Error Message: "+e.getMessage());
                e.printStackTrace();
            }
        }
        
    }



原文参考:http://blog.csdn.net/zhyuh_perl/article/details/7247324
分享到:
评论

相关推荐

    jdbc 操作oracle blob数据

    jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...

    使用JDBC4.0操作Oracle中BLOB类型的数据方法

    在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...

    JDBC+Hibernate将Blob数据写入Oracle

    在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...

    JDBC操纵Oracle数据库中的BLOB字段

    本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...

    JAVA操作Oracle blob类型

    总的来说,Java通过JDBC和Oracle JDBC驱动提供了一套完整的工具来操作Oracle数据库中的BLOB类型。无论是在插入、查询、更新还是删除BLOB数据,都需要注意效率和资源管理,以确保程序的稳定性和性能。通过实践和优化...

    Oracle blob字段上传下载

    本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: 1. **创建Blob字段:** 首先需要在数据库表中定义一个Blob类型的字段。 2. **...

    java对oracle数据库中blob字段的处理

    Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...

    使用Jdbc4操作Blob,Clob

    在提供的`Hibernate4_Spring3_Blob_Test`压缩包中,可能包含了使用Hibernate4和Spring3来测试Blob操作的例子。Spring可以帮助管理数据库连接和事务,而Hibernate则提供了方便的对象关系映射,使得处理LOB如同操作...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    jdbc中如何处理Oracle___BLOB字段

    ### JDBC中如何处理Oracle BLOB字段 在Java开发过程中,特别是在使用JDBC(Java Database Connectivity)与Oracle数据库交互时,处理BLOB(Binary Large Object)类型的数据是一项常见的需求。BLOB通常用于存储大量的...

    上传图片,保存到数据库,jdbc操作blob

    上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...

    java中读取ORACLE中BLOB字段存储的图片

    - JDBC驱动:下载并添加Oracle JDBC驱动到项目的类路径中。 - 开发工具:例如Eclipse或IntelliJ IDEA。 - Java版本:确保安装了JDK,并且配置好了环境变量。 2. **数据库表设计**: - 创建一张包含`BLOB`类型的...

    JDBC_oracle.zip

    总的来说,JDBC_oracle.zip可能包含了一个示例,展示了如何使用JDBC与Oracle数据库进行交互,包括创建连接、执行SQL、处理结果集以及管理事务等操作。这个.jmx文件可能是JMeter测试计划,用于性能测试或负载测试...

    spring oracle blob

    为了能够通过Spring框架操作数据库中的BLOB数据,需要对`sqlMapConfig.xml`进行适当的配置。以下是一个配置示例: ```xml &lt;!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" ...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...

    使用hibernate对oracle读取blob

    JDBC Blob操作 在不使用Hibernate的情况下,可以通过JDBC直接操作Blob。首先,你需要获取到PreparedStatement,然后通过`setBlob`方法设置Blob值: ```java File file = new File("path/to/your/file"); ...

    oracle中读取blob字段.doc

    ### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...

    Struts用JDBC的Blob字段保存和读取Oracle数据库

    本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析 根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件...

Global site tag (gtag.js) - Google Analytics