java读excel图片字段代码, blob b = rs.getBlob(1);这样直接读得到的 b为 null,java 怎么才能读取到 并且存储到oracle对应的字段中。

解决方案 »

  1.   

    从数据库中读出BLOB数据没有上述由于连接池的不同带来的差异,程序流程同插入BLOB字段,但是读BLOB就不用那么复杂了,只需要J2SE的标准类java.sql.Blob就可以取得输出流。
     objVO.setContent(rs.getBlob("CONTENT"));
      

  2.   

    我是要从excel文件中读取  图片 字段,并且把这个图片存到oracle数据库中,不是从oracle数据库中读出来显示,
      

  3.   

    很早以前用的:
    给你参考下对Lob的处理!
    import static common.JDBCConnectionFactory.close;
    import static common.JDBCConnectionFactory.getConnection;import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Reader;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    /**
     * @author jiangwh
     */
    public class LobTest { //存放图片文件以及文本
    /**
     *1.因为需要使用流操作,因此需要在保存数据之前先向数据库中存放
     *  空的blob以及clob记录
     *2.oracle中empty_bolb()和empty_clob()方法可以实现
     *3.查询获得blob以及clob的操作流进行写入操作
     * */
    public static void save(){
    Connection conn=getConnection();
    Statement stmt=null;
    ResultSet rs=null;
    try{
    conn.setAutoCommit(false);//发生异常可以回滚
    //步骤1:插入一条记录,blob就阿clob所对应的列为空值
    //插入空值的目的是获得输出流。
    stmt=conn.createStatement();
    String sql1=
    "insert into lob_tbl values(1,'tom',empty_blob(),empty_clob())";
    stmt.execute(sql1);
    //步骤2:将插入的记录读入到结果集
    String sql2=
    "select * from lob_tbl where id=1";
    rs=stmt.executeQuery(sql2);

    oracle.sql.BLOB blob=null;
    oracle.sql.CLOB clob=null;
    //步骤3:通过get方法获得对应的blob,clob对象,为实现获得对应的
    //输出流,需要将其进行oracle.sql.BLOB/CLOB的强制类型转换
    while(rs.next()){
    blob=(oracle.sql.BLOB)rs.getBlob(3);
    clob=(oracle.sql.CLOB)rs.getClob(4);
    }
    //步骤4:进行流操作实现具体blob以及clob内容的存储

    //对blob对象存储
    OutputStream osBlob=blob.getBinaryOutputStream();

    FileInputStream fisBlob =new FileInputStream
    ("/home/briup/JD0802集体照.jpg");
    BufferedInputStream bisBlob=new BufferedInputStream(fisBlob);
    byte[] bufferBlob=new byte[1024];
    int lengthBlob=0;
    while((lengthBlob=bisBlob.read(bufferBlob))!=-1){
    osBlob.write(bufferBlob,0,lengthBlob);
    }
    osBlob.flush();
    osBlob.close();
    bisBlob.close();
    fisBlob.close();
    //对clob的存储
    Writer writerClob=clob.getCharacterOutputStream();
    writerClob.write("I an tom");
    writerClob.flush();
    writerClob.close();
    conn.commit();
    }catch(Exception e){
    try{
    conn.rollback();
    }catch(Exception e1){

    }
    }finally{
    close(conn,stmt,rs);
    }
    }
    //生成图片文件以及文本文件
    public static void load(){
    Connection conn=getConnection();
    Statement stmt=null;
    ResultSet rs=null;
    try{
    String sql="select * from lob_tbl where id=1";
    stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);

    oracle.sql.BLOB blob=null;
    oracle.sql.CLOB clob=null;
    while(rs.next()){
    blob=(oracle.sql.BLOB)rs.getBlob(3);
    clob=(oracle.sql.CLOB)rs.getClob(4);
    }
    InputStream isBlob=blob.getBinaryStream();
    BufferedInputStream bisBlob=new BufferedInputStream(isBlob);

    FileOutputStream fosBlob=new FileOutputStream
    ("/home/briup/Desktop/blob.gif");
    BufferedOutputStream bosBlob=new BufferedOutputStream(fosBlob);

    byte[] bufferBlob=new byte[2048];
    int lengthBlob=0;
    while((lengthBlob=bisBlob.read(bufferBlob))!=-1){
    bosBlob.write(bufferBlob,0,lengthBlob);
    }
    bosBlob.flush();
    bosBlob.close();
    fosBlob.close();
    bisBlob.close();
    isBlob.close();

    //对clob的读出操作
    Reader readerClob=clob.getCharacterStream();
    FileOutputStream fosClob=new FileOutputStream
    ("/home/briup/Desktop/clob.txt");
    BufferedOutputStream bosClob=new BufferedOutputStream(fosClob);
    OutputStreamWriter oswClob=new OutputStreamWriter(bosClob);
    char ch[]=new char[30];
    int lengthClob=0;
    while((lengthClob=readerClob.read(ch))!=-1){
    oswClob.write(ch,0,lengthClob);
    }
    oswClob.flush();
    oswClob.close();
    bosClob.close();
    fosClob.close();
    readerClob.close();
    conn.commit();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    close(conn,stmt,rs);
    }
    }}