界面程序查询数据库记录后,系统报如下错误!
急求解决!谢谢各位高手!
“Invalid BLOB handle in record buffer!”

解决方案 »

  1.   

    你的数据库里面有blob字段。这个需要处理过!
      

  2.   

    转贴:
    我在sql中用image类型的字段来存放文件,文件不大,每个都不超过10k,在写入库里的
    时候出现错误'invalid blob handle in record buffer'说是bde的错误...文件很小
    不会是因为size的原因...这个问题怎么回事啊...谢谢大虾. 
     
    tunick (2001-1-11 6:29:00)  
    我改称ado以后就没有这个问题了..
    但是我不能使用ADO..如果需要更改BDE,该改哪里呢?
    还有就是这个问题的出现是在库里的纪录多了以后才冒出来的.
    使得我既不能写,也不能读,而且错误原因都是上面所说的那个.
    搞的我极其郁闷...他mm的...要是分不够,偶愿意在家100大洋..
    大哥大嫂们帮帮忙....//bow... 
     
    郭玉梁 (2001-1-11 7:16:00)  
    修改BDE的Configuration->Drivers->Native->MSSQL->BlobSize的值,
    他对你的应用有影响。 
     
    tunick (2001-1-11 18:07:00)  
    这个值我曾经改过解决不了问题的说。 
     
    dq (2001-1-11 18:12:00)  
    我觉得不是大小的原因,把你写库的代码帖出来看看吧。 
     
    yangkee (2001-1-11 18:34:00)  
    bde中blobcache的大小? 
    Seoul_BJ (2001-1-11 18:37:00)  
    先设置BDE Administrator中的与Blob相关项的值,再重新建立你的BDE连接。
      也可以不改BDE Administrator中的设置,直接改你的BDE连接设置即可。 
     
    delphifaq (2001-1-11 19:34:00)  

     
    tunick (2001-1-12 11:31:00)  
    整个这个问题的出现是因为库里的记录增多才出现的,而且出现过一次以后这个东东
    就每次都出现,可是我奇怪为什么换成ADO连接以后就没有毛病,
    我用delphi里面的
    TblobField(Table1.fieldbyname('xx')).savetostream和
    TblobField(Table1.fieldbyname('xx')).loadfromstream方法来调用
    他是直接调用呢还是通过BED的API来调用呢...
    如果两者是分开的,那么我可不可以直接调用BDE的API呢..
    我查了查这个问题出现的原因,是这个样子的
    DBIERR_INVALIDBLOBHANDLE The logical BLOB handle 
    supplied in the record buffer is invalid.
    Any portion of the data within the BLOB field can be retrieved, 
    starting from the position specified in iOffSet, and extending 
    to the number of bytes specified in iLen. pRecBuf should contain 
    a BLOB handle obtained by calling DbiOpenBlob. DbiGetBlob can 
    access data larger than 64Kb, depending on the size you allocate 
    for the buffer.这个肯定不是文件大小的问题,因为每一个文件都没有超过8k的....
    郁闷啊....郁闷.....
     
    smj_9547 (2001-1-17 8:22:00)  
    你更改了BLOB SIZE后必须要将原来的别名删除后重新建立!才可以使BLOB SIZE 生效! 
     
    pqx (2001-1-17 10:49:00)  
    还是要把BLOBS TO CACHE改大些,请认真看BLOBS TO CACHE的帮助。特别是如下这段:
    Setting a value 100 means the application can work with a maximum 
    of 100 BLOB records cached. Fetching more than 100, then scrolling 
    back 100 records results in an "Invalid Blob handle in record buffer" 
    error message.BLOBS TO CACHE的默认值是64,那么就是说包含blob字段的query or table的记录数
    不能超过64条记录,所以你要么改大BLOBS TO CACHE的值,最大可达65535,要吗提取的
    记录数(cache)不能太多。
    还有记录数太多的话要相应改大BLOB SIZE的值, 默认是32K,一个文件8K的话,那么只能
    cache 4条记录,最大可为1000K。所以cache的记录数不能太多。另:修改bde的参数后无须重建别名,只要重新启动应用程序就ok.
      

  3.   

    非常感谢!
    本人已经处理成功,并且是在TDataBase中动态加入BLOBS TO CACHE参数,解决成功!
    非常感谢hellolongbin(一个人[终不似 少年游]) 的转贴!