为何会死锁? 这样的程序如何写啊?? 急,老板半小时后看程序!!!<font size=10 color=red>救命</font

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
为何会死锁? 这样的程序如何写啊?? 急,老板半小时后看程序!!!<font size=10 color=red>救命</font> (100分)<br />先分别SELECT A表和B 表,加了NOLOCK参数,一加 StartTransaction就死,不加则没事

try
begin
DM_2000.Db_mis.StartTransaction; 加了这个就死
with DM_2000.wQry_UpStrore do
begin
close;
插入到B表中
execsql;
end;

with DM_lib.wQry_upchange do
begin
close;
修改A表,扣库存
if rowsAffected = 0 then
showmessage('&amp;Icirc;&amp;acute;&amp;Auml;&amp;Uuml;&amp;iquest;&amp;Ucirc;&amp;sup3;&amp;yacute;&amp;sup2;&amp;Ouml;&amp;iquest;&amp;acirc;&amp;iquest;&amp;acirc;&amp;acute;&amp;aelig;&amp;pound;&amp;iexcl;');

end;

DM_2000.Db_mis.commit; 死了
end;
Except on E : exception do
begin
showmessage('&amp;acute;í&amp;Icirc;ó:'+E.message);
DM_2000.Db_mis.rollback;
end;
end;
end;
 
先判断下是否在事务里
 
哈哈,好倒霉
 
try
begin
dm_transdata.Adoconection_Source.CommitTrans;
dm_transdata.Adoconection_Source.BeginTrans;
dm_transdata.ADOConnection_Recieve.CommitTrans;
dm_transdata.ADOConnection_Recieve.BeginTrans;
Messagebox(handle,'更新资料成功!','更新:',mb_ok);

end;
except
messagebox(handle,'发生不可预知的错误,本次更新不成功,请重新试过','错误提示:',mb_ok+mb_IconError);
end;//end of try
 
:吴剑明 时间:00-10-4 17:06:06
现在是17点41分,老板在你身后。。。。
 
可是各位,不管如何,请告诉问题所在。:(


 
你是不是用sql server6.5以上的数据库?如果是,你还要在Client Network Utility设置
多通道,否则会出现死锁。
 
try
if not DM_2000.Db_mis.Transaction then
DM_2000.Db_mis.Transaction ;//如果未开启事务则开启事务,同时避免重复开启
....
DM_2000.Db_mis.commit; //提交事务
Except
on E : exception do
begin
showmessage('&amp;acute;í&amp;Icirc;ó:'+E.message);
DM_2000.Db_mis.rollback;
end;
end;
另:tyr...excpet之间可以不必使用begin...end,except...end同样。
 
你真好玩
 
多人接受答案了。
 
靠,整个一无华可说
 
后退
顶部