`
virusfu
  • 浏览: 183122 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle中的Blob字段的处理

    博客分类:
  • java
 
阅读更多

 Oracle中的Bloc字段的处理较其他字段来说,会有一些特殊性。现就对在java和pl/sql下,Blob字段的处理和大家做一些交流。

  下面,简单介绍一下Blob在以下两种环境中的写入处理,

  u java环境

  u PL/SQL环境

  一、java环境

  1、 Blob的插入操作

  1) 插入一空的Blob。

  2) 更新该纪录的Blob。

  例子:

  比如表结构如下:

  CREATE TABLE Student (

  Name VARCHAR2(30),

  Age Int,

  Picture Blob);

  i.插入一空的Blob。

  String command=”INSERT INTO Student VALUES(?,?,?)”;

  Connection conn=null;

  PreparedStatement ps=null;

  try

  {

  conn=…;

  ps=conn. prepareStatement(command);

  ps.setString(1,”ZhangSan”);

  ps.setInt(2,20);

  ps.setBlob(3, BLOB.empty_lob());

  ps.executeUpdate();

  …

  ii.更新该纪录

  …

  byte[] data=null;

  Connection conn=null;

  Try

  {

  data=… //图片信息

  conn=。。

  ByteArrayInputStream in=new ByteArrayInputStream(data);

  updateBlob(in, conn, “Student”,”Picture”,”Name”,”zhangsan”);

  …

  public static void updateBlob( InputStream instream,

  Connection conn,

  String table,

  String blobColumn,

  String keyColumn,

  String keyValue)

  throws SQLException, IOException

  {

  Statement stmt = null;

  OracleResultSet rs = null;

  BLOB blob = null;

  boolean oldAutoCommit = conn.getAutoCommit();

  StringBuffer sqlBuffer = new StringBuffer();

  try {

  conn.setAutoCommit(false);

  sqlBuffer.append(“select ”);

  sqlBuffer.append(blobColumn);

  sqlBuffer.append(“ from ”);

  sqlBuffer.append(table);

  sqlBuffer.append(“ where ”);

  sqlBuffer.append(keyColumn);

  sqlBuffer.append(“=‘”);

  sqlBuffer.append(keyValue);

  //注意这里的”for update”

  sqlBuffer.append(“’ for update ”);

  stmt = conn.createStatement();

  rs = (OracleResultSet) stmt.executeQuery(sqlBuffer.toString());

  if (!rs.next())

  {

  rs.close();

  stmt.close();

  throw new IllegalArgumentException(

  “no record found for keyValue: ‘” + keyValue + “’”);

  }

  blob = rs.getBLOB(1);

  OutputStream outstream = blob.getBinaryOutputStream();

  int bufferSize = blob.getChunkSize();

  byte[] buffer = new byte[bufferSize];

  int bytesRead = -1;

  while ((bytesRead = instream.read(buffer)) != -1)

  {

  outstream.write(buffer, 0, bytesRead);

  }

  instream.close();

  outstream.close();

  rs.close();

  stmt.close();

  }

  catch (SQLException e)

  {

  throw e;

  }

  catch (IOException e)

  {

  throw e;

  }

  finally {

  conn.setAutoCommit(oldAutoCommit);

  }

  }

  二、PL/SQL下

  (例子表结构如一所示)

  i.插入一空的Blob。

  …

  declare

  bufferBlob BLOB;

  data RAW(…)

  …

  INSERT INTO Student VALUES(‘zhangsan’, 20 , empty_blob() );

  …

  ii.更新该纪录的Blob。

  …

  SELECT Picture INTO bufferBlob FROM Student WHERE Name=’zhangsan’ FOR UPDATE;

  DBMS_LOB.OPEN(bufferBlob , dbms_lob.lob_readwrite);

  dbms_lob.write(bufferBlob , utl_raw.length(data) , data);

分享到:
评论

相关推荐

    oracle中对blob字段的处理方法

    oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。

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

    用户只需提供必要的连接信息和表字段名,就能自动批量导出BLOB字段中的图片。 总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点...

    Python如何操作Oracle的Blob字段

    Python如何操作Oracle的Blob字段,

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    1. **数据准备**:确保ORACLE数据库中的BLOB字段包含所需的数据,并且是完整的。可能需要进行数据验证,以确保所有数据都能被正确读取。 2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,...

    oracle查询blob字段照片(jpeg) 像素大小sql

    本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在Oracle数据库中,Blob(Binary Large Object)类型用于存储大容量的二进制数据,比如图像、音频...

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

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

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

    在IT领域,尤其是在Java开发与...通过上述步骤,可以有效地在Java应用程序中处理Oracle数据库中的BLOB字段,同时解决跨数据库操作中可能遇到的问题。这不仅提高了数据处理的灵活性,也增强了系统的整体功能性和稳定性。

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

    本文将详细介绍如何在Java应用程序中读取存储在Oracle数据库BLOB字段中的图片数据。 #### 二、准备工作 为了实现读取Oracle数据库中的BLOB字段存储的图片,我们需要进行以下准备: 1. **环境搭建**: - Oracle...

    oracle中读取blob字段.doc

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

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案.pdf

    * 在ORACLE数据库中,坐标点被存储在BLOB字段中。 * 使用JSP技术可以读取BLOB字段中的坐标点,然后将其传递到JAVA类中显示图形。 知识点4:图形的显示 * 在图形的正中还显示了编号,充分展示了JSP结合JAVA应用的...

    C#访问oracle数据库类,带blob字段读写

    以上就是使用C#访问Oracle数据库并处理Blob字段的基本方法。在实际开发中,还需要考虑错误处理、事务管理、连接池等高级概念,以确保代码的健壮性和性能。同时,为了安全起见,建议使用参数化查询来防止SQL注入攻击...

    Oracle中Blob字段的写入处理

    此文档是对于oracle数据库中blob类型字段二进制大对象的读取和解析

    Oracle blob字段上传下载

    3. **写入文件内容:** 将文件内容写入到Blob字段中。 ##### 示例代码(上传部分): ```java public static void uploadBlob(Connection cn, MmsNewsVO evo) throws Exception { // 获取元素主键 String medpk =...

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

    然后,通过类似的方法,读取本地文件并将其内容插入到MySQL的BLOB字段中。在Java中,你可以使用`PreparedStatement`的`setBinaryStream()`方法: ```java FileInputStream in = new FileInputStream(...

    oracle存取图片blob字段

    oracle 存读数据库的blob字段 .net有两种方式向Oracle的blob字段中存储图片:

    oracle blob 字段 读写 delphi

    - 对于DBExpress,可以使用TOracleQuery组件的SQL属性执行查询,然后在OnBeforeOpen事件中处理BLOB字段,通过TOracleBlobField对象访问BLOB数据。 - 对于ADO,使用TADODBCommand对象的Execute方法执行查询,通过...

    判断blob字段是否为空

    在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...

    oracle中blob 字段类型的应用

    Oracle中的Blob字段类型是用于存储大量二进制数据的数据类型,比如图像、音频或大型文档。Blob代表Binary Large Object,其最大容量可达4GB。在Oracle数据库中,Blob与Clob(Character Large Object)、Bfile和Nclob...

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案

    在项目管理中,有时需要处理大量的图形数据,这些图形数据通常是以坐标的形式存储在数据库的BLOB字段中。然而,使用JSP直接处理和显示这些图形数据具有一定的难度,因为JSP本身并不具备直接绘制图形的功能。因此,...

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

    使用 JAVA 读取 ORACLE BLOB 字段实现上传下载需要完成以下几个步骤:上传大对象、将大对象存储在数据库中、使用专门的函数来完成 BLOB 的使用。在 Struts 项目中,我们可以使用 Struts 的文件上传组件来上传大对象...

Global site tag (gtag.js) - Google Analytics