`
marc0658
  • 浏览: 80719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE的BLOB存取

阅读更多
ORACLE的BLOB存取- -
Tag: BLOB存取                                         

就一个例子,周日在一个书店看书,就参照写个例子,呵呵

/*
* Created on 2005-7-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.yaowj.database;

import java.sql.*;

import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.OracleResultSet;
import oracle.sql.BLOB;
import com.yaowj.database.DBbean;

import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;

/**
* @author ywj
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class BlobBeanTest {
  
static Logger logger = Logger.getLogger(BlobBean.class.getName());
Connection conn = null;
public BlobBeanTest(){
}
/**
  *
  * @author ywj
  * 写入Blob到数据库
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
public boolean addBlob(String fileName){
  boolean flag = true;
  PreparedStatement pStmt=null;
     ResultSet rs=null;
     BLOB blob = null;
     try{
        conn=getConnection();
        conn.setAutoCommit(false);
        //logger.info(" the con is "+con);
         pStmt=conn.prepareStatement("insert into blobtable values(empty_blob())");
         System.out.println("000000000000000");
         pStmt.executeUpdate();
         pStmt=conn.prepareStatement("select blobvalue from blobtable for update");
         System.out.println("111111111111111");
         rs=pStmt.executeQuery();
         while(rs.next()){
          blob = ((OracleResultSet)rs).getBLOB(1);
          //logger.info(" blob.length() is "+blob.length());
         }
         System.out.println("222222222222222");
         File binaryFile = new File(fileName);
         //logger.info(fileName+"'s length = "+binaryFile.length());
         FileInputStream instream = new FileInputStream(binaryFile);
         OutputStream outstream = blob.getBinaryOutputStream();
         int chunk = blob.getChunkSize();
         //logger.info("chunk size is "+chunk);
         byte[] buffer = new byte[chunk];
         int length = -1;
         while((length=instream.read(buffer))!=-1)
          outstream.write(buffer,0,length);
         instream.close();
         outstream.close();
         conn.commit();
       }catch(SQLException e){
        e.printStackTrace();
        //logger.error(" SQLException "+e);
        flag = false;
       }catch(FileNotFoundException e){
        e.printStackTrace();
        //logger.error(" FileNotFoundException "+e);
        flag = false;
       }catch(IOException e){
        e.printStackTrace();
        //logger.error(" IOException "+e);
        flag = false;
       }finally{
           try{
             rs.close();
             pStmt.close();
             conn.close();
           }catch(Exception e){e.printStackTrace();}
       }
       return flag;
}
/**
  *
  * @author ywj
  * 从数据库读取Blob数据至文件
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
public boolean readBlob(String fileName){
  java.util.Date d1 = new java.util.Date();
  System.out.println("********"+d1);
  boolean flag = true;
  PreparedStatement pStmt=null;
     ResultSet rs=null;
     BLOB blob = null;
     try{
        conn=getConnection();
        conn.setAutoCommit(false);
        //logger.info(" the con is "+con);
         pStmt=conn.prepareStatement("select blobvalue from blobtable");
         rs=pStmt.executeQuery();
         while(rs.next()){
          blob = ((OracleResultSet)rs).getBLOB(1);
          //logger.info(" blob.length() is "+blob.length());
         }       
         FileOutputStream file_out = new FileOutputStream(new File(fileName));
         //InputStream blob_in = blob.getBinaryStream();
         BufferedInputStream blob_in = new BufferedInputStream(blob.getBinaryStream());
         int temp;
         while((temp=blob_in.read())!=-1)
          file_out.write(temp);
         file_out.close();
         blob_in.close();
         conn.commit();
       }catch(SQLException e){
        e.printStackTrace();
        //logger.error(" SQLException "+e);
        flag = false;
       }catch(FileNotFoundException e){
        e.printStackTrace();
        //logger.error(" FileNotFoundException "+e);
        flag = false;
       }catch(IOException e){
        e.printStackTrace();
        //logger.error(" IOException "+e);
        flag = false;
       }finally{
           try{
             rs.close();
             pStmt.close();
             conn.close();
           }catch(Exception e){e.printStackTrace();}
       }
       java.util.Date d2 = new java.util.Date();
       System.out.println("********"+d2);
       return flag;
}


/**

这里取得数据库链接,oracle,其他数据库请做相应修改

*/
public Connection getConnection(){
  Connection conn = null;
  try{
   Class.forName("oracle.jdbc.driver.OracleDriver");
   String url = "jdbc:oracle:thin:@localhost:1521:lsscc";
   String name = "bbs";
   String password = "bbsadmin";
   conn = DriverManager.getConnection(url,name,password);
   System.out.println("the conn is "+conn);
  }catch(Exception e){
   e.printStackTrace();
  }
  return conn;
}


/**

测试

*/
public static void main(String[] args){
  BlobBeanTest bbt = new BlobBeanTest();
  //这里请写文件的存放路径
  boolean b1 = bbt.addBlob("C:\\test\\music.mp3");
  boolean b2 = bbt.readBlob("C:\\test\\music1.mp3");
  System.out.println(b1);
  System.out.println(b2);
}

}

- 作者: wolfzha 访问统计:710 2005年07月11日, 星期一 17:53 加入博采
分享到:
评论

相关推荐

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

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

    基于.NET的Oracle BLOB数据高效存取方法.pdf

    标题提到的“基于.NET的Oracle BLOB数据高效存取方法”是一种针对Oracle数据库中BLOB类型数据存储和读取的优化策略。BLOB(Binary Large Object)是Oracle数据库中用于存储大量二进制数据的对象,常用于保存图像、...

    oracle存取图片blob字段

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

    DELPHI的CLOB和BLOB存取处理.zip_DELPHI的CLOB和BLOB存取处理_hallzgz

    本篇文章将深入探讨DELPHI中如何有效地进行CLOB和BLOB的存取处理。 CLOB主要用来存储大文本数据,如长篇文章、XML文档或JSON字符串,而BLOB则用于存储大量的二进制数据,如图像、音频、视频文件或者任何非文本的...

    Java存取OracleBlob字段,图片存储,Blob和BLOB的问题,Clob,oracle.docx

    ### Java存取Oracle Blob 字段详解 #### 一、Blob 和 BLOB 的区别 在处理 Oracle 数据库中的二进制大型对象(Binary Large Object,简称 Blob)时,开发者经常会遇到两个相似但不同的概念:`java.sql.Blob` 和 `...

    Java 对象存储到Oracle Blob字段

     java对象存储到Blob   ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo; try { oo = new ObjectOutputStream(bo); oo.writeO

    Oracle,Clob,Blob数据存取的Java代码

    以下是对Oracle中Clob和Blob数据存取的Java代码示例及详细解释。 首先,确保你的项目已经引入了Oracle JDBC驱动(如ojdbc.jar)。然后,你需要创建一个与Oracle数据库的连接,这通常通过`DriverManager.get...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据...综上所述,`CLOB`和`BLOB`都是在Oracle中存储图片的有效方法,具体选择哪种方式取决于应用场景和需求。`ClobAndBlob`工具提供了一种便捷的方式来体验和比较这两种方式的使用效果。

    c#Blob图片在oracle上读取、保存、上传

    c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。

    Oracle在PB中用OLE存取blob类型数据[归类].pdf

    "Oracle在PB中用OLE存取blob类型数据" Oracle是在PowerBuilder(PB)中使用OLE存取Blob类型数据的解决方案。该解决方案主要涉及到PB中使用OLE存取Blob类型数据的方法,包括建立数据库表、创建PB库、设置数据库连接...

    DELPHI BLOB存取(ADO,ODAC)

    ODAC是由Devart公司提供的一个高性能Delphi和C++Builder数据库连接库,它支持多种数据库,包括Oracle、MySQL、PostgreSQL等。ODAC提供了一个更直接的面向对象的方式来操作数据库,相比ADO,它通常能提供更好的性能...

    oracle,weblogic读写blob

    Oracle 和 WebLogic 服务器在处理 BLOB(Binary Large Object)数据类型时,涉及的是数据库管理和Web应用程序中的数据存储与检索。BLOB 类型通常用于存储大量二进制数据,如图片、音频或视频文件。本篇文章将深入...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    - BLOB(二进制大对象):用于存储大型二进制数据,如影像、图片等,其长度可达4GB,支持随机存取。 - BFILE:虽然用于存储大型二进制数据,但数据实际存储在文件系统中,数据库中仅存储指向文件的指针,Oracle对...

    网页在Oracle中存取图片

    网页在Oracle中存取图片是一项常见的技术操作,尤其在企业级应用中,为了高效管理和存储大量数据,数据库系统如Oracle经常被用作图片资源的存储地。以下将详细阐述这一主题,包括图片的存储方式、访问流程以及相关...

    在C中存取Oracle数据库表中BLOB数据的方法研究.pdf

    在C中存取Oracle数据库表中BLOB数据的方法研究.pdf

    C#在oracle中存取图片(web版)

    首先,我们要了解标题中的"C#在Oracle中存取图片",这意味着开发者使用C#编写了代码,通过Oracle数据库来管理图像数据。在Oracle中存储非结构化数据,如图片,通常涉及BLOB(Binary Large Object)数据类型,它可以...

    extjs中本地照片预览、blob数据在oracle中存取

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    绝对好用!extjs中本地照片预览、blob数据在oracle中存取.zip

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    Oracle存取文件

    ### Oracle存取文件知识点 #### 一、Oracle Blob数据类型简介 在Oracle数据库中,Blob(Binary Large Object)是一种专门用于存储二进制大数据的对象类型,它可以有效地存储诸如图像、音频文件、视频文件以及任何其他...

    用ASP.NET 2.0在Oracle中存取图片(文件)的操作

    ### 使用ASP.NET 2.0在Oracle中存取图片(文件)的详细操作指南 在IT领域,尤其是在Web开发中,处理图像和其他文件是常见需求。本文将深入探讨如何使用ASP.NET 2.0框架在Oracle数据库中存取图片和其他类型的文件。...

Global site tag (gtag.js) - Google Analytics