问题如题:
我的代码:  
sql = "DELETE FROM JBINARY WHERE JB_HDSGID=" + Tools.Q(Hdr_SGID);
      sql += " AND JB_DOC=" + Tools.Q(DocID);
      sql += "AND JB_FIELD=" + Tools.Q(FldID);
      db.execUpdate(sql);
      //
      //* -------------------------------------------------------------------------------- *
      // *
      // * Create a blank new record
      // *
      // * -------------------------------------------------------------------------------- *
      //
      
      sql = "INSERT INTO JBINARY (JB_SGID, JB_HDSGID, JB_DOC, JB_FIELD) VALUES (";
      sql += Tools.Q(JB_Own_SGID) + ",";
      sql += Tools.Q(Hdr_SGID) + "," + Tools.Q(DocID) + "," + Tools.Q(FldID)+")";
      db.execUpdate(sql);
          //
      // * -------------------------------------------------------------------------------- *
      // *
      // * Update the IMAGE field into row
      // *
      // * -------------------------------------------------------------------------------- *
      //
      sql = "UPDATE JBINARY SET JB_FILEBIN=? WHERE JB_SGID=" + Tools.Q(JB_Own_SGID);
      sql +=" AND JB_HDSGID=" + Tools.Q(Hdr_SGID);
      sql +=" AND JB_DOC= "+Tools.Q(DocID);
      sql +=" AND JB_FIELD="+Tools.Q(FldID);
      bps = conn.prepareStatement(sql);
      File file=new File(TargetDir);
      l1=file.length();
      l2=(int)l1;
      is = new java.io.FileInputStream(file);
      bps.setBinaryStream(1,is,l2);
      bps.executeUpdate();
      bps.getConnection().commit();
      bps.close();
      is.close();
      is = null;
      bps = null;当上传的文件比较小时,可以保存到数据库。但是文件稍微大一点,却不能保存到数据库

解决方案 »

  1.   

    insert:
    insert into table(<blob_column>) values(empty_blob());select:
    select <blob_column> from table where id = XXXXX for update;update:
    // write bytes into BLOB Object named yourBlobcommit();
      

  2.   

    什么提示信息都没有,到数据库中查询blob字段的长度,结果长度为空。当文件比较小时,查询blob字段的长度为数字
      

  3.   

    insert: 
    insert   into   table( <blob_column> )   values(empty_blob()); select: 
    select   <blob_column>   from   table   where   id   =   XXXXX   for   update; update: 
    //   write   bytes   into   BLOB   Object   named   yourBlob commit();
      

  4.   

    1 你怎么读取的blob字段长度?DBMS_LOB.GETLENGTH() 这个才可以
    2 insert和update 需要启用事务
    3 顺序和方法请参考 2/5 楼, 一般都是 select for update 的,因为要锁住这一行,免得出现同步问题