我使用的是VB+SQL,看了很多帖子,但是还是有点迷糊,过程如下,到底该怎样实现只要有一句错就全部回滚?
VB中默认使用的游标是客户还是服务器?
事务中应该使用什么游标?
cnn是数据库连接模块,Cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=shoesenterprise"Private Sub Cmdqxpz_Click()
On Error GoTo errHandle
...
Cnn.BeginTrans
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.CommitTrans
...errHandle:
If Err.Number <> 0 Then
Cnn.RollbackTrans
MsgBox "信息提示:" & Err.Number & vbCrLf & Err.Description
End If
End Sub请问各位:
1.需要指定游标类型不?以上过程能不能正确实现只要有一句错就全部回滚,如果不能,该怎么修改?
2.假设第三条执行语句有错误,则第一二条能不能正确回滚?
VB中默认使用的游标是客户还是服务器?
事务中应该使用什么游标?
cnn是数据库连接模块,Cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=shoesenterprise"Private Sub Cmdqxpz_Click()
On Error GoTo errHandle
...
Cnn.BeginTrans
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.CommitTrans
...errHandle:
If Err.Number <> 0 Then
Cnn.RollbackTrans
MsgBox "信息提示:" & Err.Number & vbCrLf & Err.Description
End If
End Sub请问各位:
1.需要指定游标类型不?以上过程能不能正确实现只要有一句错就全部回滚,如果不能,该怎么修改?
2.假设第三条执行语句有错误,则第一二条能不能正确回滚?
Private Sub Cmd1_Click()
On Error GoTo ErrHandler Call Sed
Call Main Dim sql As String
sql = "insert into tb_cust values(" & _
"'" & T1(0).Text & "'," & _
"'" & T1(1).Text & "'," & _
"'" & T1(2).Text & "'," & _
"'" & T1(3).Text & "'," & _
"'" & T1(4).Text & "')"
cnn.Execute sqlExitEntry:
Exit Sub
ErrHandler:
MsgBox Err.Description, vbOKCancel, "错误"
Resume ExitEntry
End Sub Call Sed
Call Main
这两句到底是什么意思呀???
Cnn.Execute("update ...")
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
把短的SQL拼接起来执行,把长的SQL拆分开执行。
On Error GoTo errHandle
...
Cnn.BeginTrans
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.CommitTrans
...
exit sub '这里需要加这个,不然不管是否有错误都会进入错误处理部分
errHandle:
If Err.Number <> 0 Then
Cnn.RollbackTrans
MsgBox "信息提示:" & Err.Number & vbCrLf & Err.Description
End If
End Sub
Private Sub Cmd1_Click()
On Error GoTo ErrHandler Call Sed
Call Main Dim sql As String
sql = "insert into tb_cust values(" & _
"'" & T1(0).Text & "'," & _
"'" & T1(1).Text & "'," & _
"'" & T1(2).Text & "'," & _
"'" & T1(3).Text & "'," & _
"'" & T1(4).Text & "')"
cnn.Execute sql ExitEntry:
Exit Sub
ErrHandler:
MsgBox Err.Description, vbOKCancel, "错误"
Resume ExitEntry
End Sub 事务从哪里开始?哪里提交?哪里回滚?是不是只是一个错误的提示噢??
On Error GoTo errHandle
...
Cnn.BeginTrans '事务开始
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.Execute("insert into ...")
Cnn.Execute("update ...")
Cnn.CommitTrans '事务提交
... errHandle:
If Err.Number <> 0 Then
Cnn.RollbackTrans '事务回滚
MsgBox "信息提示:" & Err.Number & vbCrLf & Err.Description
End If
End Sub
http://topic.csdn.net/u/20090814/10/fee02edd-e9ca-48f5-a49b-8554af135a2b.html