多用户同时写同一数据库中的一个表

时间:2022-08-29 11:27:20
在DELPHI中,如何控制多个用户在同一时刻写同一个数据库中的一个表,而引起数据混乱.(SQL SERVER数据库)我用的是ADOConnection去做连接,想用它的MODE属性去做控制,但好像不管用,有哪位大哥能给我讲解下它吗?最好一起讲讲多用户同时刻访问同一数据库的问题

6 个解决方案

#1


这好像没有必要在程序一级控制吧,直接在数据库设计的时候考虑这个问题来得方便,而且很多情况下sql server就有并发控制的功能的。

#2


在程序中使用事务处理:

例:

ADOConnection1.BeginTrans;
try
  //做更新数据的操作.
  ADOConnection1.CommitTrans;
except
  ShowMessage('数据存储失败');
  ADOConnection1.RollbackTrans;
end;

#3


我也遇到了这人问题,一楼的和二楼的好象没有解释清楚,能不能再说清楚一些

#4


ADOConnection1.BeginTrans;
try
  //做更新数据的操作.
  ADOConnection1.CommitTrans;
except
  ShowMessage('数据存储失败');
  ADOConnection1.RollbackTrans;
end;


采用事务处理,就是二楼提供的方法,把写数据库的代码写到
//做更新数据的操作处,这样每个用户的操作都是独占的,即不会同时写,一个时刻只允许一个用户写数据库,其他的用户操作会被回滚,从而实现了并发控制

#5


开事务吧
保证没问题

#6


处理完此次事务后
才能允许其它操作

#1


这好像没有必要在程序一级控制吧,直接在数据库设计的时候考虑这个问题来得方便,而且很多情况下sql server就有并发控制的功能的。

#2


在程序中使用事务处理:

例:

ADOConnection1.BeginTrans;
try
  //做更新数据的操作.
  ADOConnection1.CommitTrans;
except
  ShowMessage('数据存储失败');
  ADOConnection1.RollbackTrans;
end;

#3


我也遇到了这人问题,一楼的和二楼的好象没有解释清楚,能不能再说清楚一些

#4


ADOConnection1.BeginTrans;
try
  //做更新数据的操作.
  ADOConnection1.CommitTrans;
except
  ShowMessage('数据存储失败');
  ADOConnection1.RollbackTrans;
end;


采用事务处理,就是二楼提供的方法,把写数据库的代码写到
//做更新数据的操作处,这样每个用户的操作都是独占的,即不会同时写,一个时刻只允许一个用户写数据库,其他的用户操作会被回滚,从而实现了并发控制

#5


开事务吧
保证没问题

#6


处理完此次事务后
才能允许其它操作