奇怪了adoquery post方法批量导入jpeg图片(文件)到access ole字段 发现有的图片没有保存上难道post大文件需要时间? 代码如下:解决办法
奇怪了adoquery post方法批量导入jpeg图片(文件)到access ole字段 发现有的图片没有保存上难道post大文件需要时间? 代码如下:
for i:=1 to Adoquery1.RecordCount do //根据数据库里的图片名称循环保存图片
begin
PhotoFile:=Edit6.Text+Trim(Edt_beginS.Text)+Trim(Adoquery1.FieldByName(MyField).AsString)+Trim(Edt_EndS.Text)+ '.jpg ';
Label11.Caption:= '正在导入: '+PhotoFile;
if FileExists(PhotoFile) then
begin
Adoquery1.Edit;
TBlobField(Adoquery1.FieldByName( 'Photo ')).LoadFromFile(PhotoFile);
AdoQuery1.Post;
//Sleep(300);
Application.ProcessMessages ;
....
大部分的jpeg图片被保存了 可还是有些图片没有保存到数据库 比较其它jpg发现大小为50-80k左右 比其它的图片20k大 我尝试加了Sleep(300);后 竟然都可以保存了 还有调试单步 时也可以保存 是不是 post 大文件时来不及保存 程序就循环保存下一个文件了 如何解决呢 总不能用 sleep吧
------解决方案--------------------
首先,尽可能的不要把文件放到数据库里;
其次,如果非要放到数据库里也只能放小文件(几百K);
还有,将文件放入数据库会造成假死现象,可以在for语句中加上Application.ProcessMessages。
------解决方案--------------------
对于大的数据流,必须使用特殊的语法进行读写。
------解决方案--------------------
这也许是access独有的现象
for i:=1 to Adoquery1.RecordCount do //根据数据库里的图片名称循环保存图片
begin
PhotoFile:=Edit6.Text+Trim(Edt_beginS.Text)+Trim(Adoquery1.FieldByName(MyField).AsString)+Trim(Edt_EndS.Text)+ '.jpg ';
Label11.Caption:= '正在导入: '+PhotoFile;
if FileExists(PhotoFile) then
begin
Adoquery1.Edit;
TBlobField(Adoquery1.FieldByName( 'Photo ')).LoadFromFile(PhotoFile);
AdoQuery1.Post;
//Sleep(300);
Application.ProcessMessages ;
....
大部分的jpeg图片被保存了 可还是有些图片没有保存到数据库 比较其它jpg发现大小为50-80k左右 比其它的图片20k大 我尝试加了Sleep(300);后 竟然都可以保存了 还有调试单步 时也可以保存 是不是 post 大文件时来不及保存 程序就循环保存下一个文件了 如何解决呢 总不能用 sleep吧
------解决方案--------------------
首先,尽可能的不要把文件放到数据库里;
其次,如果非要放到数据库里也只能放小文件(几百K);
还有,将文件放入数据库会造成假死现象,可以在for语句中加上Application.ProcessMessages。
------解决方案--------------------
对于大的数据流,必须使用特殊的语法进行读写。
------解决方案--------------------
这也许是access独有的现象