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、nclob的意义以及区别

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

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

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

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

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

Oracle保存大对象BLOB

最近在使用Oracle做文件上传,要求将文件数据保存到数据库中。Oracle提供了Blob用来存储二进制大对象数据,可是它和Java.sql里面的Blob不兼容,经常导致Blob字段无法锁定或者操作失...
  • zhoulongbin
  • zhoulongbin
  • 2010年02月26日 16:34
  • 3795

Java Oracle数据库BLOB字段的存取

Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。  写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个curs...
  • dhdhxgx
  • dhdhxgx
  • 2015年05月22日 11:56
  • 2796

对oracle中BLOB字段读写的总结

对oracle中BLOB字段读写的总结   最近两天,阿堂在处理将页面中的文件上传和下载时,要将页面上,客户选择的任意类型上传的文件,写入到oracle中的BLOB类型的字段中,同时,客户...
  • xys_777
  • xys_777
  • 2011年11月11日 13:35
  • 4075

oracle存储大数据类型(Clob/Blob)

oracle本身支持对大数据类型的各种处理,但是平常大家可能用的不多,其中clob(一般用于大类型的字符型的存取)和blob(一般用于大类型的二进制类型的存取)我想应该就是用的比较少的。所以我写下这篇...
  • johnjobs
  • johnjobs
  • 2012年10月16日 16:46
  • 3243

关于文件保存到Oracle中BLOB字段的方法及例子

关于文件保存到Oracle中BLOB字段的方法及例子 ------------------------------------------- public class FileOpClass ...
  • hsg77
  • hsg77
  • 2011年10月12日 13:21
  • 5424

关于把数据保存到oracle中的blob字段

首先用这么一个form字段的属性去保存这个blob字段的值。        然后就是调用savecmd这个动作,需要注意的是,在这个时候form表单的属性区别已经是    这就提示在逻辑中数据...
  • shuimuzhiyuan
  • shuimuzhiyuan
  • 2013年01月30日 14:36
  • 1043

深入浅析mybatis oracle BLOB类型字段保存与读取

一、BLOB字段   BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写。其中BLO...
  • QCIWYY
  • QCIWYY
  • 2017年01月05日 13:48
  • 1810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle blob数据类型存储读取的小例子
举报原因:
原因补充:

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