关于不正常关机丢失数据问题(100分)

  • 主题发起人 主题发起人 zjw
  • 开始时间 开始时间
Z

zjw

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的一数据库程序中因需要实时、随机接收数据。故需将表一直打开等待,
而如果此时突然停电或死机造成不正常退出,即会出现数据丢失。
请问该如何解决这一问题呢?
 

1、加一个UPS
2、必须将表一直打开,没别的办法替代吗?
 
先写入文件,再转入数据库.
 
用UPS吧!
 
UPS只能解决停电对死机无用。
写入文件与实时备份具体采用什么方法呢?
其实单独将表关闭后再打开也不能解决问题。
 
我在实际工作中彩以以下方法;
with dm1.table1 do
begin
edit;
post;
close;
open;
end;
你可以将上述写在一个Timer控件中,实现一段时间内自动备份!
 
为什么不用 UPS ?关键数据投这点资还是应该的。
 
bobby的方法我早已试过,可能因为我的表在DATAMODULE里面采用共享方式打开的原因,结果
为失败。但如果将程序关闭再打开那么关闭前的数据就不会丢失了,但采用此法似乎太苯。
我主要是想了解DELPHI程序在此方面起关键作用的是什么操作?
 
附加功能 将问题提前
 
单机应用吗?在AfterPost中写入:
DbiSaveChanges( Table1.Handle);
 
把缓冲数据写入硬盘 table1.flushbuffers;
 
不要使用PARADOX表的索引,或使用DBASE表即可解决!
 
贴一个吧,忘了从那里来得了:(
=============
uses BDE first, then
dbisavechanges(table.handle);
////////////////////
If you did use paradox table, and did post after every transaction,
and suddenly the computer hangs, or Stop ...Or you turn off your
computer without quiting any of the application, you will lost your
data, even thought you POST !!!
DBisavechanges is from BDE unit, that use to flush any caches into
Table physically.
I don't have array30 input method here, forgive me to use english.
you can write to me in chinese.
---From Kow Kok Choon
 
就是 flushbuffers!
 
建议别一直打开数据库,如果非的这样,你同时是也写往文件,
然后将文件关闭,即便你在打开文件时掉电,也没关系,用scandisk
扫描出的文件碎片中还可以恢复,数据库就不知道了,
不过根据我的经验,当你使用Post后,数据是不会丢失的
 
dbisavechanges、flashbuffer、post我都试过了都不行。倒是ApplyUpdates在Alt+F4时起
作用,但他们都对类似Alt+Ctrl+Del的关闭方式无效。
 
TABLE1.flushbuffers绝对可以-----很多人已经遇到这种问题了
 
TSQFZY:您确定,可能是我过于驽钝。我是在AppendRecord后再flashbuffer然后使用Alt+
F4与Alt+Ctrl+Del模拟非正常关闭程序,都无法成功您如果有这样的程序可以试试。如果
在您处成功,那请您指点我有可能是那几种错误?
 
后退
顶部