发信人: hangjianjun (我行我素), 信区: Delphi
标 题: RE:新手求教数据库存盘问题
发信站: BBS 水木清华站 (Thu Dec 17 15:36:36 1998) WWW-POST
【 在 polisher (拍先生) 的大作中提到: 】
: 我在Delphi中更新数据库是用post,但如果机器突然掉电,我发现数据并没有存入。
:
: 可我的Table属性cachedupdates设的可是false啊。?: 小弟先谢过了。
一般的说,只有当Table被关闭时修改的数据才被数据库引擎存进硬盘,系统掉电或者崩
溃都会导致数据丢失!为了避免数据丢失,可调用BDE函数(DbiUseIdleTime,DbiSaveChan
ges)强制存盘。
1.DbiSaveChanges(hDBICur):
==========================
DbiSaveChanges 保存所有的数据更新,可以随时调用。例如你可以在一个纪录更新后立
即存盘:
procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
DbiSaveChanges(Table1.handle);
end;
注:该方法并不适用于SQL数据表。
2.DbiUseIdleTime:
==========================
DbiUseIdleTime 可以在WINDOWS消息队列为空时调用,使BDE能够保存缓冲区中的数据。
换句话说,他完成DbiSaveChanges的所有功能,而且是保存所有更新过的表格。
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.onIdle := UseIdle;
end;
procedure Tform1.UseIdle(Sender: TObject; var Done: Boolean);
begin
DbiUseIdleTime;
end;
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.119.80.106]