adoconnection的事务问题?(200分)

  • 主题发起人 主题发起人 Soncy
  • 开始时间 开始时间
S

Soncy

Unregistered / Unconfirmed
GUEST, unregistred user!
今天遇到一个问题,adoconnection事务中间进行对于数据库的很多存取,删除操作,
但是提交事务后好像都没有效果。
先begintrans,然后insert into table1(a,b,c,d,e,f,...,z) values(.....)两遍(两条记录不相同),
最后commit
table1表中有个自动增长字段,begintrans前是210,commit后是212,
但是没发现211这条记录。
如果不使用事务,一切正常。
ado的可疑参数:ConnectionTimeout=15
IsolationLevel=ilCursorStability
数据库:sql server 7.0
 
问题应该在自动增长字段,你的自动增长字段是怎么在程序中处理的???
 
ADO操作Oracle时commit操作已经封装在ADO里面了,不必要单独写。
 
->ado的可疑参数:ConnectionTimeout=15
Is->olationLevel=ilCursorStability
不要冤枉好人,如果没有异常被确发,它们就是正常的。
不知你的两个insert语句是怎么写的和执行的?我的意思是说在ado控件中的sql属性,你应当写成如下:
adoconnect1.begintrans
with adoquery1 do begin
close;
sql.clear;
sql.add('insert ....'); //第一条insert
executesql;
sql.clear;
sql.add('insert...'); //第二条insert
executesql;
open;
end;
adoconnect1.committrans;
 
to wumeng:
自动增长字段不列入insert语句中;由数据库自己处理
to windbell:
格式跟你说的差不多。呵呵
 
试试将adoconnect1.begintrans和adoconnect1.committrans;改成如下:
adoconnect1.execute('begin transaction');和adoconnect1.execute('commit transaction');
即将事务的管理交由数据库来进行,而不再用adoconnect
 
呵呵,解决了。把query的paramcheck设成false就可以用了。
faint...八杆子打不着的属性
谢谢各位大侠热心相助..
 
后退
顶部