`
阅读更多

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

 1import oracle.jdbc.OracleResultSet;  // 使用Oracle的ResultSet对象
 2import oracle.sql.BLOB;  // 使用Oracle的BLOB对象,而不是sun的Blob
 3
 4
 5
 6try{
 7  Connection conn=<数据库连接>;
 8  File file=<存入数据库的文件对象>;
 9  conn.setAutoCommit(false);  // 取消Connection对象的auto commit属性
10  String file_name=file.getName();
11
12  // 数据库中有一个item表,其中的file_name (varchar2)存储文件名,file_blob (blob)存储文件对象
13  String sql="INSERT INTO item (file_name,file_blob) VALUES ('" + file_name + "',EMPTY_BLOB())";  // 使用“EMPTY_BLOB()“成生一个空blob
14  Statement stmt=conn.createStatement();
15  int count=stmt.executeUpdate(sql);
16  
17  sql="SELECT file_blob FROM item WHERE iid='" + iid + "' FOR UPDATE";  // 使用“FOR UPDATE”得到表的写锁
18  ResultSet rs=stmt.executeQuery(sql);
19  rs.next();
20  BLOB blob=((OracleResultSet)rs).getBLOB("file_blob");  // 得到BLOB对象
21  OutputStream out=blob.getBinaryOutputStream();  // 建立输出流
22  InputStream in=new FileInputStream(file);  // 建立输入流
23  int size=blob.getBufferSize();
24  byte[] buffer=new byte[size];  // 建立缓冲区
25  int len;
26  while((len=in.read(buffer)) != -1)
27    out.write(buffer,0,len);
28  in.close();
29  out.close();
30
31  conn.commit();
32}

33catch(Exception ex){
34  try{
35    conn.rollback();
36  }

37  catch(SQLException sqle){
38    System.err.println(sqle.getMessage());
39  }

40}

41
42

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

分享到:
评论

相关推荐

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

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

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

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

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

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

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

    在Java中,可以使用`ResultSet.getBinaryStream()`方法读取BLOB流,然后将其写入文件: ```java File outputFile = new File("&lt;output_path&gt;"); 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. **...

    使用hibernate对oracle读取blob

    在Java开发中,Blob(Binary Large Object)类型用于存储大对象,如图片、音频或视频文件等。Oracle数据库是广泛使用的数据库系统,它支持Blob类型的字段。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了...

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

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

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

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

    java操作oracle blob类型(下)

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

Global site tag (gtag.js) - Google Analytics