如何在oracle里面操作BLOB

原创 2003年08月18日 01:11:00

看了下面的程序就知道了

如果有问题请回:cgguo@163.net

import java.io.*;
import java.util.*;
import java.sql.*;
import oracle.jdbc.driver.*;
import java.text.*;
//
// @author: guo chang guo
// @time: 2003 08 17
//
// this program shows how to put a very big bytes array into oracle table(long raw)
// you can not use PreparedStatement's method setBytes, because setBytes can not
// support very big bytes array, you must use PreparedStatement's method setBinaryStream.
// if you want to use this method, you must transfer your bytes array into inputstream,
// in this example, we use ByteArrayInputStream which can be constructed by a bytes array.
//
// @copyright(R) cvicse
//

//
//the definition of the oracle table :CREATE TABLE  bin_data (name VARCHAR(30),data long raw ).
//you can not define the table: CREATE TABLE  bin_data (name VARCHAR(30),data blob )
//

//
//we have test this program in oracle 9.2 the file size is 31M
//

public class test
{
 public static void main(String args[]) throws java.io.IOException,java.sql.SQLException
 {
  try
  {
            Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch (java.lang.ClassNotFoundException e)
    {
            System.err.print("ClassNotFoundException: " + e.getMessage());
    }

  try
  {
   //open a file, put the content of file into a bytes array
   
   File files = new File("c://temp//jdk140.chm");
   FileInputStream fis=new FileInputStream(files);
    System.out.println(files.getName());
   System.out.println((int)files.length());

         byte[] fl = new byte[(int)files.length()];
   System.out.println(fl.length);
   fis.read(fl);
  
  //use this bytes array to construct a InputStream 
  
         ByteArrayInputStream  kk = new ByteArrayInputStream(fl) ;

  
  //connect the oracle database
  
       Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@eaiserver01:1521:orcl", "system", "admin");  
   PreparedStatement ps = conn.prepareStatement("INSERT INTO bin_data (name,data)" +"VALUES (?, ?)");

  
  //set parameters
  
   ps.setString(1,files.getName());
      ps.setBinaryStream(2, kk,(int)files.length());
  
  
  //execute
     
   ps.executeUpdate();
   fis.close();
   ps.close();
  
  // read from the table
  
   int bytesRead = 0;
   int byteSum = 0;
   byte[] buffer = new byte[8 * 1924];
   FileOutputStream fis2 = new FileOutputStream("c://temp//hi.chm");

  
   PreparedStatement ps2 = conn.prepareStatement(  "select data from bin_data");
   ResultSet rs = ps2.executeQuery();
   if (rs != null)
   {
    while(rs.next())
    {
     InputStream is = rs.getBinaryStream(1);
     while ((bytesRead = is.read(buffer)) != -1)
      {
               byteSum += bytesRead;
               fis2.write(buffer, 0, bytesRead);
      }
      fis2.close( );
    }
   rs.close( );
   }
   ps2.close( );
}
catch(Exception e)
  {
   System.out.println("errror :"+e.toString() );
   e.printStackTrace();
  
  }
}
}

在sqlplus中操作blob和clob

Tom在他的《Expert one on one oracle》给出了sqlplus中将文件load进BLOB或者CLOB字段的例子。这里保存一份以备急用。 create directory ...
  • liqfyiyi
  • liqfyiyi
  • 2014年09月28日 09:17
  • 2000

oracle 读取blob大字段

import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Bl...
  • u012488189
  • u012488189
  • 2013年11月23日 17:18
  • 1945

一些 Oracle Sql 语句的使用

Declare No Number; v Emp%Rowtype; --定义接受Emp一行数据的变量 Cursor Mycur Is Select * From Emp e; ...
  • cuisuqiang
  • cuisuqiang
  • 2014年11月13日 16:02
  • 204

对oracle中的BLOB的操作(读取,写入)

 将BLOB保存为本地文档: /// /// 读出Blob字段 /// /// sql语句,执行结果为BLOB数据 /// ...
  • ChuXiaMuXiang
  • ChuXiaMuXiang
  • 2009年12月21日 11:05
  • 2604

学习操作oracle.sql.Blob数据类型,向数据库插入Blob数据类型的数据

/**      * @author cqw      * 向数据库插入Blob类型数据,数据库表 SSDATAFILE(SSDATAFILEID,STRFILENAME,STRTIMETICKS...
  • brilliantenginer
  • brilliantenginer
  • 2012年10月14日 14:17
  • 4780

java oracle blob 读写操作

java oracle blob 读写操作 (mybatis,hibernate)
  • WD4871
  • WD4871
  • 2016年05月18日 14:19
  • 1083

java操作oracle数据库中的blob字段

oracle中的BLOB字段是存储2进制的文件,比如文件,图片等。 1、把本地文件写入数据库 package com.data;import java.io.File;import java.io.F...
  • gaowenming
  • gaowenming
  • 2010年01月04日 14:07
  • 2093

JDBC ORACLE BLOB处理

LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的数据)。 LOB 分为两种类型:内部LOB和外部LOB。     ...
  • cuigaochong
  • cuigaochong
  • 2015年08月26日 10:22
  • 2163

如何在水晶报表里显示图象?

通常我们要在水晶报表里显示文本和数字数据。有时候,数据库里会包含图象数据,并且我们也希望在水晶报表里使用它。有很多途径可以在报表中显示数据驱动的图象第一要确保图象具有足够的大小和质量。设法在报表里将高...
  • haibodotnet
  • haibodotnet
  • 2004年01月08日 11:39
  • 3660

oracle blob数据类型存储读取的小例子

网上查找到一些代码,好多不能用,这段代码是我参考别人的后自己改了改,保证能用。 package com.hbky.bo;import java.io.BufferedInputStream;impor...
  • mohamode
  • mohamode
  • 2007年10月09日 22:32
  • 6269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在oracle里面操作BLOB
举报原因:
原因补充:

(最多只允许输入30个字)