vb6.0 中 事务处理的一个问题
发布时间:2020-12-16 22:28:33 所属栏目:大数据 来源:网络整理
导读:On Error GoTo ErrorHandler Dim sSQL As String If DbConnection Then Cn.BeginTrans sSQL = " insert into test1(PID,UID,PS) Values(1,'1','1'); " _ " insert into test1(PID,PS) Values(2,PS) Values(3,PS) Values(4,'1'); " Cn.Execute sSQL sSQL = "
On Error GoTo ErrorHandler Dim sSQL As String If DbConnection Then Cn.BeginTrans sSQL = "insert into test1(PID,UID,PS) Values(1,'1','1');" _ & "insert into test1(PID,PS) Values(2,PS) Values(3,PS) Values(4,'1');" Cn.Execute sSQL sSQL = "insert into test1(PID,PS) Values(5,'2');" _ & "insert into test1(PID,PS) Values(6,'1');" _ & "insert into test5(PID,PS) Values(7,'1');" Cn.Execute sSQL Cn.CommitTrans MsgBox "执行成功",vbInformation End If Exit Sub ErrorHandler: Cn.RollbackTrans MsgBox Err.Description,vbInformation 其中 test5 表是不存在的 但是 这个事物是会执行成功的 。 可能原因 ado其实不判断事物的 他交给后台判断 但是 后台遇到多条sql时候只会检测返回第一条的判断结果 如果 sSQL = "insert into test5(PID,'1');" _ & "insert into test1(PID,'1');"则 事物就会回进行回滚。 解决方法 。 拼接字符串 要 采用 一句一条的方法 使用 SQL = "insert into test5(PID,'2');"这样 ado就会正确的判断出结果。SQL = "insert into test1(PID,'1');" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |