当前位置:  技术问答>java相关

oracle的blob类型读写文件,help me

    来源: 互联网  发布时间:2015-07-21

    本文导语:  我的环境,tomcat 3.32 + oracle + win2000 在blob中读写都没有返回错误,可是写出来得excel文件,提示不能识别的文件格式 打开后,里面什么也没有,为什么?? 写入blob代码() try{  String fileurl = "d:/1.xls";  File f = n...

我的环境,tomcat 3.32 + oracle + win2000
在blob中读写都没有返回错误,可是写出来得excel文件,提示不能识别的文件格式
打开后,里面什么也没有,为什么??
写入blob代码()

try{ 
String fileurl = "d:/1.xls";
 File f = new File(fileurl);
 FileInputStream is=new FileInputStream(f); 

 String sql="insert into excel(id,excel,dx0) values(?,?,?)"; 
 Statement st = conn.createStatement();
 FileInputStream str=new FileInputStream(f); 
 PreparedStatement pstmt=conn.prepareStatement(sql); 
 pstmt.setString(1,"fff"); 
 pstmt.setBinaryStream(2,str,str.available()); 
 pstmt.setInt(3,str.available()); 
 pstmt.execute();
}catch(Exception e){System.out.println(e);}

读取blob代码()
 try{
 Connection conn = ConnBean.getConnection();
    Statement stmt=conn.createStatement();
   ResultSet rset=stmt.executeQuery("SELECT dx0,excel from excel where id = 'fff'");
    while (rset.next())
      {// Get LOB locators into Java wrapper classes.
        int id=rset.getInt(1);//获取文件长度。
        BLOB blob=((OracleResultSet)rset).getBLOB(2);//获取文件字段。
        // int chunk=blob.getChunkSize();
        int chunk=id;
        byte [] buffer=new byte[chunk];
        System.out.println(chunk);
  
  File fileout = new File("d:/");
File ftemp = fileout.createTempFile("bbb" + "_",".xls",fileout);
  //  FileOutputStream fouts = new FileOutputStream(ftemp);

        //File binaryFile=new File("d:/3.xls");
        FileOutputStream fileoutstream=new FileOutputStream(ftemp);//创建文件输出流。
        InputStream instream=blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。
        instream.read(buffer,0,chunk);//将文件流存入变量buffer,以buffer为中转
        fileoutstream.write(buffer,0,chunk);//将buffer写入文件输出流。
        System.out.println("write ok!");
        instream.close();//关闭流
        fileoutstream.close();
      }
    rset.close();
    stmt.close();
    conn.close();
    System.out.print("ok");
  }
  catch(Exception ee)
  {
      System.out.println(ee.getMessage());
  }


帮我看看,要多少分都给

|
package test;
import java.sql.*;
import java.io.*;
import java.util.*;
import oracle.jdbc.driver.*;

//needed for new CLOB and BLOB classes
import oracle.sql.*;


/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2002
 * Company:
 * @author  yukm
 * @version 1.0
 */

public class TestOracle {



 static void  readFromFile (BLOB blob,File file) throws Exception {
   File binaryFile = file;
   FileInputStream in = new FileInputStream(binaryFile);
   OutputStream out = blob.getBinaryOutputStream();
   int chunk = blob.getChunkSize();
   System.out.print("The chunk size is " + chunk);
   byte [] buffer = new byte[chunk ];
   int length;
   while ((length = in.read(buffer)) != -1)
   out.write(buffer, 0, length);
   in.close();
   out.close();
}
static void  writeToFile (BLOB blob,File file) throws Exception {
int chunk = blob.getChunkSize();
byte[] buffer = new byte[chunk];
int length;

FileOutputStream outFile = null;
outFile = new FileOutputStream(file);
InputStream instream = blob.getBinaryStream();

while ((length = instream.read(buffer)) != -1) {
outFile.write(buffer, 0, length);
}
instream.close();
outFile.close();
}




  public  static void  main(String args[]){
  try {
    Driver drv=new oracle.jdbc.driver.OracleDriver();
    Properties props=new Properties();
    props.put("user","system");
    props.put("password","manager");
    Connection con=drv.connect("jdbc:oracle:thin:@168.200.8.25:1521:TEST",props);
    con.setAutoCommit(false);
    Statement st=con.createStatement();
    ResultSet rs=st.executeQuery("SELECT * FROM music");
    while(rs.next())
      {
       System.out.println(rs.getString("NAME"));
       }
    rs.close();
    BLOB blob=null;
   st.execute("INSERT INTO music VALUES('家家有本难念的经',3,'../music/jiajiayoubennianniandejing.mp3',empty_blob())");
  st.execute("COMMIT");
   rs=st.executeQuery("SELECT * FROM music  WHERE ID=3 FOR UPDATE");
   while(rs.next())
      {
       blob = ((OracleResultSet)rs).getBLOB("CONTENT");
       // blob=(BLOB)rs.getBlob("CONTENT");
      }
   File file=new File("d:\mypic.jpg");
   readFromFile(blob,file);
   file=new File("d:\mypic1.jpg");
   writeToFile(blob,file);

   con.close();
  }catch (Exception e)
    {
     System.out.println(e.getMessage());
     e.printStackTrace();
    }
   }


|
http://www.csdn.net/Expert/TopicView.asp?id=83096&datebasetype=200101

    
 
 

您可能感兴趣的文章:

  • 怎样将当前时间写到Oracle中date类型的字段中!!!!!!!!!!!! iis7站长之家
  • 在CentOS5.3下运行oracle10g(10.2.0.4)速度慢,硬盘读写慢
  • oracle中utl_file包读写文件操作实例学习
  • java读写oracle的blob字段示例
  • oracle中读写blob字段的问题解析
  • ORACLE数据库常用字段数据类型介绍
  • oracle中的空类型与c语言的空类型相匹配吗?
  • 关于Oracle BLOB类型,一个String字符怎么写入BLOB字段?
  • Oracle中查看某列数据类型
  • 测试添加Oracle中Blob数据类型对象
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • oracle中 VARCHAR2是什么数据类型
  • 请问保存文章内容的字段应用什么类型的(oracle),急!!!
  • oracle中怎么没有boolean类型的字段?应该用什么代替?
  • 如何向oracle库中字段类型是date的添加数据
  • 请问:ORACLE中的数据取出来后,需不需要进行一定的转换才能变为C语言的数据类型啊?
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • 怎样将当前时间写到Oracle中date类型的字段中!!!!!!!!!!!!
  • 急!急!oracle 中 long 类型在 tomcat 中的问题
  • 不能把几百个以上的汉字插入oracle varchar2类型的问题!
  • Oracle里long类型
  • jsp显示oracle中varchar2类型字段 在线等待
  • Oracle中的Raw类型解释
  • 我要向oracle中插入大文本,用的是lang类型的字段,但是只能插3000字,再多就抱错,说我字符串过长。谁遇到过此问题?
  • Oracle返回表类型的自定义函数
  • Oracle中字符集的类型决定varchar2的字符长度
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux平台下Oracle 密码文件重建
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • oracle删除文件后数据库启动不了的处理方法
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle控制文件多元化处理
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 读取oracle数据库表写文件慢
  • 如何向oracle中写入一个大文件?谢谢!
  • 用Jbuilder编译文件,提示找不到oracle驱动?
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3