delphi7,非典型数据库,但支持blob。
如何向blob添加数据。
Tblobfield.loadfromStream()的写入出现拒绝写入。字段属性改为可写readOnly:=false后,报无足够内存建立连接。
使用操作空间TDBImage只能上传很小的图像文件。

解决方案 »

  1.   

    是不是用的是BDE,将Cach size 和blob size改成1024看看
      

  2.   

    是用的bde, blobs to chache 设为64,应该是够了.因为用的是专门的数据库,有些类似于oracle,
    一连接数据库就报内存不足.?当然不是真的内存不足.
      

  3.   

    当然不是Blobs to chache啦, 而是blob size,设置为10240试试
      

  4.   

    第一看看你的数据库的blob字段的定义把它该大一下!还有就是数据转化的类型问题!
      

  5.   

    证实是有32k限制,但在bde adiministrator中设置过大并不是好事。怎么在程序中设置block size 的大小??
    另在导入时,导入的数据流竟然不正确:SM:=TMemoryStream.Create();
    SM.LoadFromFile('a.jpg');
    BF:=TBlobField(Table1.FieldByName('pic'));
    BF.LoadFromStream(SM);SM.SaveToFile('sm.jpg');
    BF.SaveToFile('bf.jpg');..
    发现sm.jpg和原图数据一致,bf.jpg数据已经基本丢失!!
    后面写入库的数据也就错了。怎么回事??试图使用TBlobField.value用字符串直接赋值,可100k左右的字符串操作总报错?也解决不了。相信一定有人遇到过类似问题,求教!
      

  6.   

    我也试过类似的情况,换ADO吧,BDE是没有办法的
      

  7.   

    blob size默认的是32K,你试一下把他改大点,看可以不可以
      

  8.   

    把database 的将Cach size=6400 和blob size=3200
      

  9.   

    不会吧,blob size 的范围:32 < range <1000,你能设到3200
      

  10.   

    通过设置bde的缓存,的确可以把传递的大小变大.
    问题不再这里.我已经试过,在delphi7下用TBlobStream往某些数据库中写东西就是不行.如 fsyybo所说.但在delphi5下重新编译该代码,其执行结果正确,可以写入.得出两个可能性.要么是delphi7在重写的时候对TBlobStream进行了进一步的处理,使得对原来的一些古典概念的BLOB支持性下降.  
    还有一个可能性是我使用的数据库的BLOB概念不规范.到这里,已经离题万里了,感谢大家的热心帮助.
    谢谢