blob写入

tangt 2003-08-11 05:40:28
delphi7,非典型数据库,但支持blob。
如何向blob添加数据。
Tblobfield.loadfromStream()的写入出现拒绝写入。字段属性改为可写readOnly:=false后,报无足够内存建立连接。
使用操作空间TDBImage只能上传很小的图像文件。
...全文
36 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangt 2003-08-16
  • 打赏
  • 举报
回复
通过设置bde的缓存,的确可以把传递的大小变大.
问题不再这里.

我已经试过,在delphi7下用TBlobStream往某些数据库中写东西就是不行.如 fsyybo所说.但在delphi5下重新编译该代码,其执行结果正确,可以写入.

得出两个可能性.要么是delphi7在重写的时候对TBlobStream进行了进一步的处理,使得对原来的一些古典概念的BLOB支持性下降.
还有一个可能性是我使用的数据库的BLOB概念不规范.

到这里,已经离题万里了,感谢大家的热心帮助.
谢谢
大聪 2003-08-15
  • 打赏
  • 举报
回复
把database 的将Cach size=6400 和blob size=3200
fsyybo 2003-08-15
  • 打赏
  • 举报
回复
不会吧,blob size 的范围:32 < range <1000,你能设到3200
bxh2dai 2003-08-14
  • 打赏
  • 举报
回复
blob size默认的是32K,你试一下把他改大点,看可以不可以
tangt 2003-08-14
  • 打赏
  • 举报
回复
不是吧?????
fsyybo 2003-08-14
  • 打赏
  • 举报
回复
我也试过类似的情况,换ADO吧,BDE是没有办法的
tangt 2003-08-14
  • 打赏
  • 举报
回复
证实是有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左右的字符串操作总报错?也解决不了。

相信一定有人遇到过类似问题,求教!
  • 打赏
  • 举报
回复
“非典”数据库?:)
你是不是要存入它不支持的图片格式的文件啦?
coolfilm 2003-08-12
  • 打赏
  • 举报
回复
第一看看你的数据库的blob字段的定义把它该大一下!还有就是数据转化的类型问题!
tangt 2003-08-11
  • 打赏
  • 举报
回复
没有诶,这个数据库的驱动当中没有这一设置,所以奇怪.
但绝对可以写入,原数据库的一个应用程序已经做到了.
明天再试试,再不行,..........头痛
huojiehai 2003-08-11
  • 打赏
  • 举报
回复
当然不是Blobs to chache啦, 而是blob size,设置为10240试试
tangt 2003-08-11
  • 打赏
  • 举报
回复
是用的bde, blobs to chache 设为64,应该是够了.因为用的是专门的数据库,有些类似于oracle,
一连接数据库就报内存不足.?当然不是真的内存不足.
李_军 2003-08-11
  • 打赏
  • 举报
回复
是不是用的是BDE,将Cach size 和blob size改成1024看看

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧