我用DELPHI,数据库用SQL SERVER2000,在进行数据录入时我将图片数据直接写入IMAGE字段,每次记录移动时自动读取并显示,一切正常,但就是运行速度非常缓慢,无法接受,请问这是出了什么问题,是不是数据库要进行优化,如何进行优化,还是DELPHI中的连接设置有问题而造成IMAGE类型的字段读取速度非常缓慢?我用了一个主表显示记录,用另一个子表通过主从关系连接主表,调用如下代码从子表中读取并显示图片.
记录有一千多条,每个记录的图片都是100K以下,我感到程序在打开窗体时好象要把数据库中整个表的内容都读到本机上,所以打开窗体时也很慢,请帮忙,代码如下:(代码在 adotable1.afterscroll中执行)
var
picdata:Tadoblobstream;
picread:Tjpegimage;begin
picdata:=Tadoblobstream.Create(TBlobField(adotable1.FieldByName('文件')),bmread);
picread:=Tjpegimage.Create;
picread.LoadFromStream(picdata);
picdata.Position:=0;
image1.Picture.Assign(picread);
end;
记录有一千多条,每个记录的图片都是100K以下,我感到程序在打开窗体时好象要把数据库中整个表的内容都读到本机上,所以打开窗体时也很慢,请帮忙,代码如下:(代码在 adotable1.afterscroll中执行)
var
picdata:Tadoblobstream;
picread:Tjpegimage;begin
picdata:=Tadoblobstream.Create(TBlobField(adotable1.FieldByName('文件')),bmread);
picread:=Tjpegimage.Create;
picread.LoadFromStream(picdata);
picdata.Position:=0;
image1.Picture.Assign(picread);
end;
直接用Datasource连上那个字段。
var
picdata:TMemorystream;
picread:Tjpegimage;begin
picread:=Tjpegimage.Create;
PicData:=TMemoryStream.Create;
(TBlobField(adotable1.FieldByName('文件'))).SaveToStream(PicData);
picread.LoadFromStream(picdata);
picdata.Position:=0;
image1.Picture.Assign(picread);
PicData.free;//释放流对象
PicRead.free;//释放Image对象
end;