文件型数据库开发的问题(dbf)(100分)

E

emilecn

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库文件存在于网络服务器中,多个客户端以文件共享的访问
对数据库更新时,怎样解决冲突问题?
可以用事务么,或者直接锁定表?
请大家多提意见

我自己试了一下,用事务的话,在commit或rollback时会出错,提示‘the opertion can't perform on a closed database;
用锁表的方式的话,如果同时运行两个客户端,这先启动的那个客户端出错,提示’不允许edit,因为另一用户在使用‘(大意)
 
真的没人回答么,100大洋???
 
用发消息通知的方式可行,在服务器端的数据库被修改时向所有客户发很短的文字信息,客户端收到消息后再向服务器更新。[:D][^]
 
服务器端的数据库只是一些文件而已,怎么可能给客户端发消息呢???
 
你使用什么进行数据库连接的?
 
我提议还是放弃这种文件型,改用C/S的
你应用到网络中还会出现很多意想不到的麻烦的
可能考虑用InterBase 或是MS SQLSERVER
 
我用的是BDE连接

要声明的是采用什么样的数据库不是我能决定的
 
提示数据库已经关闭!
 
文件型数据库本身就不是为网络环境的,要是必须用只能排队等待。
 
总应该有解决的办法吧,谁能给个方案出来啊
 
the opertion can't perform on a closed database;

数据库已经关闭了还想执行什么操作?
说明代码有问题,
问题的关键不在于 commit 或者 rollback
 
if Database1.InTransaction then Database1.Commit;
Database1.StartTransaction;
try
。。。
Query1.execsql.
//Query1.ApplyUpdates;
Database1.Commit; //出错??? 'the operation can't perform on a closed database'
finally
//if not DataModule2.Database1.Connected then showmessage('false');
Database1.Rollback; //出错??? 'the operation can't perform on a closed database'
end;
 
query的sql修改语句可以执行

难道是dbf不支持事务的缘故???
 
DBF是不支持事务的,也就是不能用
StartTransaction;
Database1.Commit;
Database1.Rollback;
 
查了一下帮助,BDE对dbf等支持本地事务,但有诸多限制

那看来只能采用锁定表了
 
我想结贴了,但是问题没有解决,这个100分还真不知道给谁
 
給我加分吧,謝謝
我會記住你的!
 
顶部