`

DB2中对BLOB对象的写入和读取--JAVA语言实现

阅读更多

DB2中对BLOB对象的写入和读取--JAVA语言实现

作者:魏华超  weihuachao@sina.com

package net.qysoft;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.SQLException;


/**
 * java 中对Blob数据的操作数据库的创建代码:

* (1)db2 => create table blobTest ( id int not null generated always as identity, image blob  )

 *添加用户java,密码java

 * (2) db2=>! net
 * user java java /add java分配权限

 *(3)db2 => grant select,insert,update,delete on
 * table weihuachao.blobTest to user java
 *
 *
 * @author weihuachao
 *  以下代码在microsoft 2003 系统,DB2 9.0中测试成功.
 *
 */

//类的定义开始------------------------------------------------------------

public class Test {

 public static void main(String[] args) throws Exception {

  Test test = new Test();
  Connection conn = test.createConnection();


  // Blob对象的插入的方法:
  try {


   // 创建插入语句.
   java.sql.PreparedStatement preparedStatement = conn
     .prepareStatement("insert into weihuachao.blobTest(image)values(?)");


   //创建文件对象:
   
   File file=new File("c:/a.jpg");


   // 创建流对象:
   java.io.BufferedInputStream imageInput = new java.io.BufferedInputStream(
     new java.io.FileInputStream(file));


   //参数赋值:
   preparedStatement.setBinaryStream(1, imageInput,(int) file.length());


   //执行语句
   preparedStatement.executeUpdate();
   
   
   
   //------------------------------------------------------------------
   //Blob的读取工作:


   java.sql.Statement st=conn.createStatement();


   java.sql.ResultSet rs=st.executeQuery("select image from weihuachao.blobTest");


   while(rs.next())
   {
    //读取Blob对象
    Blob blob= (Blob) rs.getBlob(1);


    //Blob对象转化为InputStream流
    java.io.InputStream inputStream =blob.getBinaryStream();


    //要写入的文件
    File fileOutput = new File("c:/backa.jpg");


    //文件的写入流的定义
    FileOutputStream fo = new FileOutputStream(fileOutput);


    int c;
    //读取流并写入到文件中
    while ((c = inputStream.read()) != -1)
    fo.write(c);


    //流的关闭:
    fo.close();

   }

  } catch (SQLException e) {


   // TODO 自动生成 catch 块
   e.printStackTrace();
  }catch(java.io.FileNotFoundException ex)
  
  {
   
   ex.printStackTrace();
  }catch(java.io.IOException ex)
  {
   
   ex.printStackTrace();
  }
  finally
  {
   try {
    conn.close();
   } catch (SQLException e) {


    // TODO 自动生成 catch 块
    e.printStackTrace();
   }
   
  }

 }

 /**
  * 定义数据库连接的方法
  *
  * @return
  */
 private Connection createConnection() {
  Connection conn = null;
  try {


   Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");

   conn = java.sql.DriverManager.getConnection("jdbc:db2:sample",
     "java", "java");


  } catch (SQLException ex1) {
   ex1.printStackTrace();


  } catch (ClassNotFoundException ex) {
   ex.printStackTrace();
  }
  return conn;
 }

}//结束.

 

总结: JAVA 对DB2中的BLOB对象的操作,主要是使用流的技术实现.对BLOB的实现主要步骤有:

(1)定义要写入的文件  File file=new File("c:/a.jpg");

(2)定义文件的写入流

  java.io.BufferedInputStream imageInput = new java.io.BufferedInputStream(
     new java.io.FileInputStream(file));

(3)使用函数写入:

   preparedStatement.setBinaryStream(1, imageInput,(int) file.length());

(4)执行SQL语句:

对BLOB的读取采取的步骤有:

(1)读取Blob的对象:  Blob blob= (Blob) rs.getBlob(1);

(2)把Blob的对象转化为流:

   java.io.InputStream inputStream =blob.getBinaryStream();
(3)定义要写入的文件
    File fileOutput = new File("c:/backa.jpg");
(4)文件的写入流的定义
    FileOutputStream fo = new FileOutputStream(fileOutput);

(5)写入文件(流的写入技术,就不多讲了)
    int c;
    while ((c = inputStream.read()) != -1)

    {
    fo.write(c);

   }
    //END

分享到:
评论

相关推荐

    java读取大字段blob类型

    本文将详细介绍如何在Java中有效地读取`BLOB`类型的大字段,帮助解决程序员们常遇到的难题。 #### BLOB类型的概述 `BLOB`类型是关系型数据库中用于存储大量二进制数据的一种数据类型。它适用于存储诸如图片、声音...

    Delphi 如何将二维数组数据 以Blob 存入数据库中 并读取 工程

    通过以上步骤,你可以成功地在 Delphi 中实现二维数组数据的 Blob 存储和读取。实际操作时,可能还需要考虑性能优化,比如批量处理和缓存策略。对于大型数据集,可以考虑使用分块读写以减少内存占用。在实践中,可以...

    mysql-connector-java-8.0.22.jar

    MySQL Connector/J 8.0.22 是MySQL数据库与Java应用程序之间进行通信的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序。在Java应用中,我们需要这个驱动来连接并操作MySQL数据库。本篇...

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...

    C#,BLOB读取操作

    C# 中的 BLOB 读取操作 C# 中的 BLOB(Binary Large OBject)读取操作是指从数据库中读取二进制数据的过程。BLOB 是一种二进制数据...通过使用 FileStream 对象和相关的方法,我们可以轻松地读取和写入 BLOB 数据。

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA 中 SQLlite 数据库 BLOB 数据类型的存取是指在 JAVA 语言中使用 SQLlite 数据库来存储和读取大型二进制对象(BLOB),以便实现文件存储和读取的功能。本文将详细介绍如何使用 JAVA 语言来实现 SQLlite 数据库...

    java file upload BLOB

    - 此方法用于从数据库中读取特定记录中的 BLOB 数据(本例中为图片),并将其返回给客户端。 - 首先,通过 `ConnBean.getConn()` 获取数据库连接。 - 接着,执行 SQL 查询语句,该语句根据传入的 `documentno` ...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    以上就是Java中Blob字段操作的基本流程,通过这些步骤,你可以成功地将图片或文件保存到数据库中,并能从数据库中读取和恢复这些数据。在实际开发中,根据具体需求,可能还需要处理异常、事务管理和资源关闭等问题,...

    在Oracle中存取BLOB对象实现文件的上传和下载.txt

    ### 在Oracle中存取BLOB对象实现文件的上传和下载 #### 核心知识点解析: **一、BLOB数据类型简介** BLOB(Binary Large Object)是数据库中的二进制大对象类型,主要用于存储大量二进制数据,如图像、音频、视频等...

    向数据库插入blob数据实例源码--在mysql中通过

    Blob(Binary Large Object)在数据库中用于存储二进制大对象,如图片、音频或视频文件等...源码中可能包含了类似的实现,通过解压提供的"向数据库插入blob数据实例源码"压缩包,你可以查看并运行完整的Java代码示例。

    Java从数据库中读取Blob对象图片并显示的方法

    这里我们主要探讨两种Java从数据库中读取Blob对象图片并显示的方法。 **方法一** 这个方法涉及从数据库获取Blob对象的输入流,并将其直接写入HTTP响应的输出流,以便浏览器可以解析并显示图片。以下是实现步骤: ...

    javacv-platform-1.5.1-source_javacv-platform_javacv1.5download_图

    4. **BlobDemo.java** - "Blob"在图像处理中通常指较大且颜色一致的对象,BlobDemo可能是一个演示如何检测和分析图像中的Blob对象的程序。 5. **FacePreview.java** - 这个文件可能涉及实时预览和处理摄像头捕捉到...

    java中sqllite数据库blob数据类型的存取.docx

    ### Java中SQLite数据库BLOB数据类型的存取 #### 背景与问题描述 在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。...

    商业编程-源码-《使用ADO实现BLOB数据的存取 -- ADO开发实践之二》配套源代码.zip

    在IT行业中,数据库操作是至关重要的,特别是在商业编程领域。本资源主要关注的是如何使用ActiveX Data Objects(ADO)来...实践中,结合书中的理论解释和源代码示例,可以加深对ADO API的理解,提升数据库编程技能。

    oracle中读取blob字段.doc

    #### 三、Java中读取BLOB字段 在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载...

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

    ### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...

    oracle blob转文件读取

    在C#中,可以通过`System.Data.OracleClient`命名空间下的类来实现对Oracle数据库的操作。具体到Blob类型的操作,主要涉及以下步骤: 1. **连接数据库**:通过`OracleConnection`建立与Oracle数据库的连接。 2. **...

    vc6读取数据库blob大二制对像

    本文将详细讲解如何在VC6环境下读取和写入Blob数据,以及涉及的关键技术点。 首先,要进行数据库操作,你需要包含必要的库文件并使用ODBC(Open Database Connectivity)接口或者ADO(ActiveX Data Objects)库。...

    javascript使用Blob对象实现的下载文件操作示例

    在JavaScript中,Blob对象用于表示不可变的原始数据,它不是JavaScript的内置数据类型,而是用来处理二进制数据的一种方式。Blob对象是File对象的基类,File对象则专门用于处理用户系统上的文件。Blob对象可以接收一...

Global site tag (gtag.js) - Google Analytics