读取SQL中的图片信息时的出错问题(100分)

  • 主题发起人 主题发起人 82625741
  • 开始时间 开始时间
8

82625741

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠,我在使用中层读取SQL中的图片信息时遇到如下错误:
unable to find record . no key specified.
record changed by another user.
读取信息的代码如下:
var
mem:tmemorystream;
pjpg:tjpegimage;
begin
with clientdataset3 do
if not FieldByName('picture').IsNull then
begin
mem := TMemoryStream.Create;
pJpg := TJPEGImage.Create;
try
TBlobField(FieldByName('picture')).SaveToStream(mem);
mem.position:=0;
pJpg.LoadFromStream(mem);
Image1.Picture.Assign(pJpg);
finally
mem.Free;
pJpg.Free;
end;
end else image1.Picture.Assign(nil);
end;
为什么每次执行到: TBlobField(FieldByName('picture')).SaveToStream(mem);时就会
发生上述错误,我在写入图片时是用流的方式,但是直接用TTable和TQuery时不会有任何
错误,系统使用:Delphi 5.0+Sql 7.0+Win2000
 
跟踪一下,看看在哪一句出错。
 
问题已解决:将TDataSetProvider中的poFetchBlobsOnDemand值改为False就可以了
另外请问一下SQL中的一张图片最大值是多少,为什么我保存进去的图片读取时会丢掉一半
 
试试设定ClientDataSet的属性:params的值
 
是不是blobsize要设大些.
 
谢谢各位的回答!
TO:kylin_2000
既然SQL中一张图片可以有2G大小,为什么我的图片保存进去后读取时会失去一半,
我的图片只有几K,是不是应该将BLOB的值设定大一点,具体应该多大呢,有比例吗?
 
多人接受答案了。
 
后退
顶部