首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

请!(JDBC技术)

2012-02-21 
请高手指点!(JDBC技术)Java codeimport java.io.BufferedInputStreamimport java.io.BufferedOutputStrea

请高手指点!(JDBC技术)

Java code
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.OutputStream;import java.sql.Blob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import jdbc.util.CloseResourse;import jdbc.util.ConnectionFactory;/** * create table images(id number(9) primary key,name varchar2(30) not null,image blob) * @author Administrator * */public class ImageLibraryServer {    public void addImage(long id,String imagename,String path){        Connection con = null;        PreparedStatement ps = null;        ResultSet rs = null;        try{            con = ConnectionFactory.getConnection();            con.setAutoCommit(false);            String sql = "insert into images(id,name,image) values(?,?,empty_blob())";            ps = con.prepareStatement(sql);            ps.setLong(1, id);            ps.setString(2, imagename);            ps.executeUpdate();            ps.close();                        sql = "select image from images where id=? for update";            ps = con.prepareStatement(sql);            ps.setLong(1, id);            rs = ps.executeQuery();            while(rs.next()){                Blob image = (Blob)rs.getBlob("image");//找到要写入的位置                [u]OutputStream out = image.setBinaryStream(0);//[/u]得到输入流,并指定开始读入的位置                BufferedOutputStream bos = new BufferedOutputStream(out);                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));                int c ;                while((c=bis.read())!=-1){                    bos.write(c);                }                bis.close();                bos.close();            }            con.commit();        }catch(Exception e){            e.printStackTrace();            try {                con.rollback();            } catch (SQLException e1) {                e1.printStackTrace();            }        }finally{            CloseResourse.close(rs, ps, con);        }    }}

划线的地方报异常,请高手给看看,非常感谢!
Exception in thread "main" java.lang.AbstractMethodError: oracle.sql.BLOB.setBinaryStream(J)Ljava/io/OutputStream;


[解决办法]
参看:
Java code
  Connection con = MyConnection.getORACLEConnection();        try ...{            java.sql.PreparedStatement pstm = con.prepareStatement(                    "select * from testBinary where id='a1'");            ResultSet rs = pstm.executeQuery();            rs.next();            oracle.sql.BLOB blob = (BLOB) rs.getBlob(2);            InputStream is = blob.getBinaryStream();            FileOutputStream fi = new FileOutputStream("f:\aaaa.mp3");            byte[] buff = new byte[1024];            int len = is.read(buff);            while (len != -1) ...{                fi.write(buff);                len = is.read(buff);            }            fi.close();        } catch (SQLException ex) ...{        } catch (FileNotFoundException ex) ...{          ex.printStackTrace();        } catch (IOException ex) ...{            ex.printStackTrace();        }
[解决办法]
学习中

[解决办法]
楼上正解。
[解决办法]
一楼正解
[解决办法]
学习拉
------解决方案--------------------


OutputStream out = image.getBinaryStream(0);

热点排行