`

在Java中使用Oracle blob

阅读更多
Oracle中的lob (Large Object)可以存储非常大的数据(可能是4GB),这样就可以通过将文件或其它任何对象序列化成字节输出流(OutputStream)后写入数据库,之后使用字节输入流(InputStream)将数据读出然后反序列化为原始文件或对象。操作时需要使用oracle的JDBC包,它扩展了sun的JDBC包中的Blob对象。同时需要注意一些细节。下面的代码演示如何使用blob(实例中需要Oracle的JDBC包)。

import oracle.jdbc.OracleResultSet;  // 使用Oracle的ResultSet对象
import oracle.sql.BLOB;  // 使用Oracle的BLOB对象,而不是sun的Blob

...

try{
  Connection conn=<数据库连接>;
  File file=<存入数据库的文件对象>;
  conn.setAutoCommit(false);  // 取消Connection对象的auto commit属性
  String file_name=file.getName();

  // 数据库中有一个item表,其中的file_name (varchar2)存储文件名,file_blob (blob)存储文件对象
  String sql="INSERT INTO item (file_name,file_blob) VALUES ('" + file_name + "',EMPTY_BLOB())";  // 使用“EMPTY_BLOB()“成生一个空blob
  Statement stmt=conn.createStatement();
  int count=stmt.executeUpdate(sql);
 
  sql="SELECT file_blob FROM item WHERE iid='" + iid + "' FOR UPDATE";  // 使用“FOR UPDATE”得到表的写锁
  ResultSet rs=stmt.executeQuery(sql);
  rs.next();
  BLOB blob=((OracleResultSet)rs).getBLOB("file_blob");  // 得到BLOB对象
  OutputStream out=blob.getBinaryOutputStream();  // 建立输出流
  InputStream in=new FileInputStream(file);  // 建立输入流
  int size=blob.getBufferSize();
  byte[] buffer=new byte[size];  // 建立缓冲区
  int len;
  while((len=in.read(buffer)) != -1)
    out.write(buffer,0,len);
  in.close();
  out.close();

  conn.commit();
}
catch(Exception ex){
  try{
    conn.rollback();
  }
  catch(SQLException sqle){
    System.err.println(sqle.getMessage());
  }
}

如果要读出文件的话只需调用BLOB的getBinaryStream()生成一个输入流,再写入一个文件就行了。
分享到:
评论

相关推荐

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

    1. **直接在HTML页面中显示**:可以在HTML页面中使用`<img>`标签直接引用图片数据。 2. **通过Servlet返回图片数据**:在JSP页面中调用Servlet返回图片数据,并在页面上显示。 以下是一个简单的示例,展示如何在JSP...

    使用JAVA读取ORACLE_BLOB字段实现上传下载.doc

    1. 在 JSP 页面中使用 Struts 的文件上传组件 `<html:file property="drawingFile"/>` 来上传大对象。 2. 在 Action 中将传入的 ActionForm 中的文件字段赋给 VO 值对象,并调用业务代理类的上传方法。 3. 在业务...

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

    在IT领域,尤其是在Java开发与Oracle数据库交互的过程中,处理BLOB(Binary Large Object)类型字段是一项常见且重要的任务。BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据...

    oracle中的BLOB(照片)转换到mysql中

    在Java中,可以使用`ResultSet.getBinaryStream()`方法读取BLOB流,然后将其写入文件: ```java File outputFile = new File("<output_path>"); FileOutputStream out = new FileOutputStream(outputFile); ...

    文件上传至oracle blob字段的java实现

    指定文件夹下的所有文件上传至oracle的blob字段,java实现

    java zip insert oracle blob

    public void testInsertToDB(String path) { //get last file name by time String fileName = ""; try { fileName = InputStreamHelp.newInstance().getLastFilename(path); LogHelp.getLogger().debug(...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...

    JAVA操作Oracle blob类型

    更新BLOB数据的过程与插入类似,只是在UPDATE语句中使用setBlob()方法: ```java File updatedImageFile = new File("updatedImage.jpg"); FileInputStream updatedFis = new FileInputStream(updatedImageFile); ...

    java操作oracle blob类型(中)

    视频第六部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116258

    oracle_java_blob

    本篇将详细介绍如何使用Java将MP3等二进制文件存入Oracle数据库中的BLOB字段。 首先,我们需要了解Oracle JDBC驱动,这是Java与Oracle数据库交互的基础。Oracle提供了一个名为ojdbc的JDBC驱动,它可以连接到Oracle...

    java中Blob转String

    分享在JAVA中Blob转换成String实例

    java实现 BLOB图片大文件在oracle中的存储和查找

    本教程将详细讲解如何使用Java来实现BLOB(Binary Large Object)类型的大文件,如图片,在Oracle数据库中的存储和查找,这对于初学者理解和掌握JDBC技术极具价值。 首先,我们需要理解BLOB类型。BLOB是Oracle...

    java操作oracle blob类型(上)

    视频第三部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116256

    Oracle blob字段上传下载

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

    批量导出ORACLE数据库BLOB字段生成文件

    通过这种方式,你可以有效地管理和处理存储在Oracle数据库中的大量BLOB数据,使其能够以文件形式在本地系统上访问和使用。 总之,批量导出Oracle数据库中的BLOB字段是一项技术性较强的任务,涉及到数据库连接、SQL...

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

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

    Oracle导出Clob,Blob工具

    在描述中提到的“Oracle导出Clob,Blob等大字段工具”就是为了解决这个问题而设计的,它是一个自编写的实用程序,方便用户导出和管理Oracle数据库中的大对象数据。 Oracle数据库中的Clob类型用于存储大量的文本数据...

    java操作oracle blob类型(下)

    视频第七部共七部 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116262

Global site tag (gtag.js) - Google Analytics