paradox数据库的数据存盘问题(死机后当次输入数据丢失)(100分)

L

liuge

Unregistered / Unconfirmed
GUEST, unregistred user!
parxdox数据不能及时存储,本人开发一文档系统,如果死机,则当次所输数据
全部丢失,请教各位,能否有办法,输入一条,则及时向存入数据库一条?急!
 
这个问题我也遇到过,
用事务来完成提交
 
我没有遇到这样的情况。
你是不是使用了缓存。如果用了是会出现这种情况。
 
Table1.close;
 
to: delphiwolf
每次都CLOSE,再又打开啊!:)
to: lzliang
没有用缓存啊!
 
这个须要对TTable及 TQuery改动。
 
那样肯定没问题。
用Table1.FlushBuffers;也可以。
 
to delphiwolf:
这种情况的原因是什么啊!!我记得以前也用过FlushBuffers,好像也不行!
 
只有关闭文件的时候,Windows才会把它写到硬盘上。
如果你要确保不丢失数据,只有Table1.Close;
 
接受了,FlushBuffers可解决。
 
发信人: 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]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
763
SUNSTONE的Delphi笔记
S
S
回复
0
查看
701
SUNSTONE的Delphi笔记
S
顶部