表tbl结构: Name Type          Nullable Default Comments 
 ---- ------------- -------- ------- --------                    
 Fld    BLOB          Y 
static void create(int s)throws SQLException,FileNotFoundException,IOException {
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try{
            conn = JdbcUtils.getConnection();//连接没有问题
            String sql="insert into tbl(Fld) values(?)";
            ps=conn.prepareStatement(sql);
            File file=new File("/D:/test.jpg");
            InputStream in=new BufferedInputStream(new FileInputStream(file));
            ps.setBinaryStream(1,in,(int)file.length());
            int i=ps.executeUpdate();//执行到此行产生错误
            in.close();
            System.out.println(i);
        }finally{
            JdbcUtils.free(rs,ps,conn);
        }
    }
报错:
Exception in thread "main" java.sql.SQLException: ORA-01460: 转换请求无法实现或不合理 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at myjdbc.CRUD.create(CRUD.java:126)
at myjdbc.CRUD.main(CRUD.java:39)
请问这是什么原因?

解决方案 »

  1.   

    补充一下,数据库是ORACLE 10G。
      

  2.   

    记得插入的时候只能插入一个空的blob字段,执行插入之后才能再把blob用流读出来往里写字节。
      

  3.   

    insert into tbl(Fld) values(empty_blob())
      

  4.   

    select Fld from tbl where ...
    ResultSet rs = ...
    Blob blob = rs.getBlob("content");
    OutputStream os = blob.setBinaryStream(0);
    os.write( .....
      

  5.   

    不要忘记
    Blob blob = conn.createBlob();
      

  6.   

    Blob blob = conn.createBlob();
    这行代码写在哪里呢?变量blob写在哪里呢?怎么都只说半句话呢?