程序报‘External Exception EEFFACE’

SaibeiStar 2010-10-13 09:55:31
需要把几万张照片全部导入到数据库中,
如果连续导入,在导入6000张照片左右时,在执行Applyupdates(0)时报‘External Exception EEFFACE’。退出程序,重新运行,继续执行导入操作,可以正常导入,困惑中...大家帮忙分析一下

清空数据库重新导入,仍然是在6000左右(与原来的数字不同)时报‘External Exception EEFFACE’,照片数据没有问题,数据库表空间也应该没问题。

开发工具DELPHI7,未打补丁,oracle数据库

程序代码大致如下,仅为说明问题:

var
jpg:TJPEGImage;
i:integer;
begin
for i:=1 to 100000 do
begin
jpg:=TJPEGImage.Create;
jpg.LoadFromFile( 'd:\a.jpg ');

with cdspic do
begin
insert;
fieldbyname(zhaopian).assign(jpg);
post;
Applyupdates(0);
jpg.free;
end;
end;
end;
...全文
2409 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
likeyrain 2010-11-24
  • 打赏
  • 举报
回复
我也想找相关释放的指令,可以找不到,但打到一个把内存转到虚拟内存的,也许有点用,但好象会影响效率
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;
SaibeiStar 2010-11-18
  • 打赏
  • 举报
回复
怎么释放?
SaibeiStar 2010-10-29
  • 打赏
  • 举报
回复
Applyupdates(0)后dataset占用的缓存怎么释放?
dataset.data:=null;不起作用
dataset.emptyupdate;只释放了一点点;
SaibeiStar 2010-10-27
  • 打赏
  • 举报
回复
用楼上的方法也是一样,是耗内存很厉害,每插入一张照片(120K)大概要耗80K甚至更多内存,现在就是先不想改变数据的存储方式,有什么好的办法解决这个问题吗?或者是如何优化ORACLE? 在循环中还有其它操作,包括打开数据集的操作,发现每打开数据集内存就会增加1兆多,如何释放数据集占用的内存?
SQLDebug_Fan 2010-10-14
  • 打赏
  • 举报
回复
是内存占用太多了,你检查一下导入6000照片的时候内存占用了多少?
whisht 2010-10-14
  • 打赏
  • 举报
回复

var
jpg:TJPEGImage;
i:integer;
begin

jpg:=TJPEGImage.Create;
try
for i:=1 to 100000 do
begin
jpg.LoadFromFile( 'd:\a.jpg ');

with cdspic do
begin
insert;
fieldbyname(zhaopian).assign(jpg);
post;
Applyupdates(0);
end;
end;
finally
jpg.free;
end;
end;


楼主这样试试
kye_jufei 2010-10-14
  • 打赏
  • 举报
回复
太吃內存了,建議分批導入。。。
lyhoo163 2010-10-14
  • 打赏
  • 举报
回复
分批导入。

2,497

社区成员

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

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