日期:2014-05-18  浏览次数:20888 次

用blob把文件插入oracle时,出现Io 异常: Connection reset blob
如题。
代码如下:
package   demo;
import   java.sql.*;
import   java.io.*;
import   oracle.sql.BLOB;
import   oracle.jdbc.*;
import   com.database.DbDAO;


public   class   Orablob   extends   DbDAO{

private   static   Orablob   inform;
public   static   synchronized   Orablob   getInstance()  
{
if   (inform   ==   null)
inform   =   new   Orablob();
return   inform;
}

    public   void   insertblob()
    {
    try
    {
//首先是将文件输入到数据库。
        Class.forName( "oracle.jdbc.driver.OracleDriver ");//注册数据库引擎。
        Connection   conn=   DriverManager.getConnection( "dburl=jdbc:oracle:thin:@10.1.92.100:1521:oradb ",   "DEW ",   "MARBLE ");//建立连接串
        conn.setAutoCommit(false);//关闭自动提交,以提高性能。
        Statement   stmt=conn.createStatement();//建立会话
     
        File   file=new   File( "D:\\laod-balancing.doc ");
        InputStream   is=new   FileInputStream(file);//创建输入流,将外部文件输入到InputStream   中。
        System.out.print(file.length());
       
        byte[]   blobByte=new   byte[is.available()];

        is.read(blobByte);
        is.close();
       
        PreparedStatement   pstmt=conn.prepareStatement( "INSERT   INTO   DEW.T_FILE     VALUES   (?,?) ");
        pstmt.setString(1, "1230110 ");
        pstmt.setBinaryStream(2,(new   ByteArrayInputStream(blobByte)),   blobByte.length);
     
        pstmt.executeUpdate();//将文件流插入到数据库中。
        System.out.print( "测试 ");   //执行到这里就不行了;
        pstmt.close();

        System.out.print( "以下是从库中读取文件。 ");
        ResultSet   rset=stmt.executeQuery( "SELECT   *   from   DEW.T_FILE ");
        while   (rset.next())
            {//   Get   LOB   locators   into   Java   wrapper   classes.
                BLOB   blob=((OracleResultSet)rset).getBLOB(2);//获取文件字段。
                //   int   chunk=blob.getChunkSize();
              int   chunk=blob.getChunkSize();
            byte   []   buffer=new   byte[chunk];
                System.out.println(chunk);

                File   binaryFile=new   File( "D:\\test.doc ");
                FileOutputStream   fileoutstream=new   F