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

原创 2007年10月09日 22:32:00

网上查找到一些代码,好多不能用,这段代码是我参考别人的后自己改了改,保证能用。

 

package com.hbky.bo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.sql.BLOB;

public class FilmBo ...{
Connection con;
    
    
public FilmBo()...{
        
try ...{
            Class.forName(
"oracle.jdbc.driver.OracleDriver");
        }
 catch (ClassNotFoundException e) ...{
            e.printStackTrace();
        }

    }

    
    
/** *//**
     * 取出blob试验数据
     *
     
*/

    
public void getBlob(BufferedOutputStream out)...{
        BufferedInputStream in 
= null;
        
        
try ...{

            con
=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:zhanglei""scott","tiger");

            con.setAutoCommit(
false);

            PreparedStatement pre 
= con.prepareStatement("select fname,fblob from ftp_test where fid = ?");

            pre.setString(
1,"00001");

            ResultSet set 
= pre.executeQuery();
            
            
if(set.next())...{
                in 
= new BufferedInputStream(set.getBlob("fblob").getBinaryStream());

//                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File("c:/"+set.getString("fname"))));

                
byte[] buffer = new byte[1024];

                
int i = 0;
                
                
while((i = in.read(buffer)) != -1)...{
                    out.write(buffer,
0,i);
                }


                out.flush();
                System.out.println(
"******************************");

                in.close();

                out.close();
                
                con.commit();
            }


            pre.close();

            con.close();
            
        }
 
//        catch (FileNotFoundException e) {
//            try {
//                con.rollback();
//            } catch (SQLException e1) {
//                e1.printStackTrace();
//            }
//            e.printStackTrace();
//        } 
        catch (SQLException e) ...{
            
try ...{
                con.rollback();
            }
 catch (SQLException e1) ...{
                e1.printStackTrace();
            }

            e.printStackTrace();
        }
 catch (IOException e) ...{
            
try ...{
                con.rollback();
            }
 catch (SQLException e1) ...{
                e1.printStackTrace();
            }

            e.printStackTrace();
        }

        
    }

    
/** *//**
     * 插入blob试验数据
     
*/

    
public void insertBlob()...{
        
        
try ...{
            Connection con 
= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:zhanglei""scott""tiger");
            con.setAutoCommit(
false);
            Statement st 
= con.createStatement();
            st.executeUpdate(
"insert into ftp_test(fid,fblob,fname)  values('00002',empty_blob(),'test.jpg')");
            ResultSet rs 
= st.executeQuery("select fblob from  ftp_test  where  fid='00002' for update");
            
if (rs.next()) ...{
                BLOB blob 
= (BLOB) rs.getBlob(1);
                OutputStream outStream 
= blob.getBinaryOutputStream();
                File file 
= new File("F:/pic/CIMG4386.jpg");
                InputStream fin 
= new FileInputStream(file);
                
byte[] b = new byte[blob.getBufferSize()];
                        
int len = 0;
                        
while ( (len = fin.read(b)) != -1...{
                          outStream.write(b, 
0, len);
                        }

                fin.close();
                outStream.flush();
                outStream.close();
                con.commit();
                con.close();

            }

        }
 catch (FileNotFoundException e) ...{
            
try ...{
                con.rollback();
            }
 catch (SQLException e1) ...{
                e1.printStackTrace();
            }

            e.printStackTrace();
        }
 catch (SQLException e) ...{
            
try ...{
                con.rollback();
            }
 catch (SQLException e1) ...{
                e1.printStackTrace();
            }

            e.printStackTrace();
        }
 catch (IOException e) ...{
            
try ...{
                con.rollback();
            }
 catch (SQLException e1) ...{
                e1.printStackTrace();
            }

            e.printStackTrace();
        }

        
    }

}

 

Oracle中的BLOB和CLOB字段类型的区别

Oracle中的BLOB和CLOB字段类型的区别1、BLOB是按二进制来存储的,而CLOB是可以直接存储文字的;2、BLOB字段可以存储图片、文件和音乐等,而CLOB可以存储文章或较长文字的内容。...
  • you23hai45
  • you23hai45
  • 2016-02-24 23:53:57
  • 5840

oracle 中的大对象数据类型blob、clob、nclob的意义以及区别

           这些天一直在试图把一个用Oracle数据库做的项目转换为用msSql2000数据库的,本以为只要把数据库的连接池改改就可以了,没想到事实并没那么简单~ 要改的地方有好多,改了几天...
  • yoyo_yaya
  • yoyo_yaya
  • 2007-01-26 15:41:00
  • 23548

查询Oracle的BLOB类型

最近在做项目的过程中,有些时候需要用Oracle的BLOB/CLOB类型存储一些很长的文章,一直不知道怎么来进行相关的检索,经过不懈的努力,终于能够解决这个问题了。查询语句如下:   se...
  • zqf_office
  • zqf_office
  • 2015-03-18 11:06:30
  • 652

oracle blob类型处理

  • 2010年04月14日 09:43
  • 5KB
  • 下载

Oracle的Blob类型转String

CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB    AS     v_clob    CLOB;  ...
  • fygkchina
  • fygkchina
  • 2017-11-13 11:58:22
  • 1353

操作Oracle类型CLOB和BLOB

操作Oracle类型CLOB和BLOB http://blog.csdn.net/wang_zhou_jian/article/details/5024683
  • orion61
  • orion61
  • 2012-04-14 22:31:08
  • 330

oracle数据库对blob类型数据的存和取

//图片的存入 @SuppressWarnings("serial") public class AddPhotoToAlbumAction extends ActionSupport {  p...
  • C_vincent
  • C_vincent
  • 2012-12-10 22:12:53
  • 411

oracle中的blob类型,clob类型,nclob类型主要区别是什么?

BLOB :  全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节 CLOB :  CLOB全称为字符大型对象(Cha...
  • fiwrc
  • fiwrc
  • 2017-03-15 16:47:12
  • 1433

oracle中Blob和Clob类型的区别与用法

BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图...
  • baidu_25310663
  • baidu_25310663
  • 2015-04-25 14:30:52
  • 5234

Java Oracle数据库BLOB字段的存取

Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。  写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个curs...
  • dhdhxgx
  • dhdhxgx
  • 2015-05-22 11:56:58
  • 3107
收藏助手
不良信息举报
您举报文章:oracle blob数据类型存储读取的小例子
举报原因:
原因补充:

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