关于三层多用户提交数据问题,高手进来救人呀~~(100分)

  • 主题发起人 主题发起人 firstlove
  • 开始时间 开始时间
to firstlove:
有一点我忘说了,服务器端把ID那个字段的pfpdate 设置为false,上面什么乱七八糟的答案,简直是误导。
 
还是不行呀~~~
 
把DataSetProvider1 的屬性﹕
UpdateMode := upWhereKeyOnly;
//用主鍵更新方式﹐速度要快一些
[Options]
poCascadeUpdate := true;
poAllowMultiRecordUpdate := true
 
我一个用户插入的时候是可以的,但是两个用户同时插入就不行了~
 
默认的在应用服务器上的更新都自动启动了一个事务,也默认的进行最低级的表锁定。那么需要两个客户更新的记录不能重复,至少应该有一个关键字段传到客户端。例如:
TheId是Clientdataset1打开时从服务器上读取出来的,每个客户不一样
for i:=1 to 1000do
begin
clientdataset1.Append;
clientdataset1.FieldByName('ID').asinteger:=TheId;
clientdataset1.FieldByName('user').asstring:=edit1.Text+inttostr(i);
clientdataset1.FieldByName('ip').asstring:='ip'+inttostr(i);
clientdataset1.FieldByName('time').asstring:=datetimetostr(now);
clientdataset1.Post;
end;
 
楼上的,应该不是ID那个字段有问题~因为这是数据库自己累加的~现在的问题是采用ACCESS数据库不能够同时插入~
 
to firstlove
ACCESS数据库我没试过,sql server用了很长时间,肯定是没问题的。
如方便的话,你可发邮件过来,我帮你调试。
 
通过事务,不行就回滚啊!
个人认为没有什么好的办法。
 
<<你两个客户端都是append的下面的数据吗?
client端向server回传数据时,先保存为delta数据封包的形式,保存在本地缓存中,applyupdates时再传给server,server端受到delta封包后解析封包内容
 
正如glpttlb所说的~~用SQL SERVER确实可行~可是数据库如果是ACCESS就不行,为什么会这样呢?
 
不能用post use sql
 
其实这是个数据库的机制问题,如果把表的锁模式改为"行锁",而不是"表锁",就不会出现不能两个用户同时插入的情况了!
 
请问怎么把表锁变成行锁?
 
后退
顶部