示例: 功能:更改数据库的 Titles 表中所有心理学书籍的书籍类型。在 BeginTrans 方法启动事务将所有对 Titles 表的更改隔离后,CommitTrans 方法将保存更改。可使用 Rollback 方法撤销用 Update 方法保存的更改。Public Sub BeginTransX() Dim cnn1 As ADODB.Connection Dim rstTitles As ADODB.Recordset Dim strCnn As String Dim strTitle As String Dim strMessage As String ' 打开连接。 strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " Set cnn1 = New ADODB.Connection cnn1.Open strCnn ' 打开 Titles 表。 Set rstTitles = New ADODB.Recordset rstTitles.CursorType = adOpenDynamic rstTitles.LockType = adLockPessimistic rstTitles.Open "titles", cnn1, , , adCmdTable
rstTitles.MoveFirst cnn1.BeginTrans ' 在记录集中循环并询问是否想要更改指定标题的类型。 Do Until rstTitles.EOF If Trim(rstTitles!Type) = "psychology" Then strTitle = rstTitles!Title strMessage = "Title: " & strTitle & vbCr & _ "Change type to self help?" ' 更改指定雇员的标题。 If MsgBox(strMessage, vbYesNo) = vbYes Then rstTitles!Type = "self_help" rstTitles.Update End If End If rstTitles.MoveNext Loop ' 询问用户是否想提交以上所做的全部更改。 If MsgBox("Save all changes?", vbYesNo) = vbYes Then cnn1.CommitTrans Else cnn1.RollbackTrans End If ' 打印记录集中的当前数据。 rstTitles.Requery rstTitles.MoveFirst Do While Not rstTitles.EOF Debug.Print rstTitles!Title & " - " & rstTitles!Type rstTitles.MoveNext Loop ' 恢复原始数据,因为这只是演示。 rstTitles.MoveFirst Do Until rstTitles.EOF If Trim(rstTitles!Type) = "self_help" Then rstTitles!Type = "psychology" rstTitles.Update End If rstTitles.MoveNext Loop rstTitles.Close cnn1.CloseEnd Sub
有,本人提供一个表只有两个字段的情况例子: dim strSql as string strsql="insert into table1 values(value1,value2)" strsql=sqlstr & "insert into table1 values(value3,value4)"cnn.begintrans on error goto ErrBegins cnn.execute strsql cnn.commonittrans exit sub ErrBegins msgbox "想写什么就写什么"
try
......
ADOQuery1.Connection.CommitTrans;
except
ADOQuery1.Connection.RollbackTrans; //回滚
end;接分
...........
cnn.committrans'提交事务
error:
cnn.rollbacktrans'出错回滚事务
写的是什么?
功能:更改数据库的 Titles 表中所有心理学书籍的书籍类型。在 BeginTrans 方法启动事务将所有对 Titles 表的更改隔离后,CommitTrans 方法将保存更改。可使用 Rollback 方法撤销用 Update 方法保存的更改。Public Sub BeginTransX() Dim cnn1 As ADODB.Connection
Dim rstTitles As ADODB.Recordset
Dim strCnn As String
Dim strTitle As String
Dim strMessage As String ' 打开连接。
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn ' 打开 Titles 表。
Set rstTitles = New ADODB.Recordset
rstTitles.CursorType = adOpenDynamic
rstTitles.LockType = adLockPessimistic
rstTitles.Open "titles", cnn1, , , adCmdTable
rstTitles.MoveFirst
cnn1.BeginTrans ' 在记录集中循环并询问是否想要更改指定标题的类型。
Do Until rstTitles.EOF
If Trim(rstTitles!Type) = "psychology" Then
strTitle = rstTitles!Title
strMessage = "Title: " & strTitle & vbCr & _
"Change type to self help?" ' 更改指定雇员的标题。
If MsgBox(strMessage, vbYesNo) = vbYes Then
rstTitles!Type = "self_help"
rstTitles.Update
End If
End If rstTitles.MoveNext
Loop ' 询问用户是否想提交以上所做的全部更改。
If MsgBox("Save all changes?", vbYesNo) = vbYes Then
cnn1.CommitTrans
Else
cnn1.RollbackTrans
End If ' 打印记录集中的当前数据。
rstTitles.Requery
rstTitles.MoveFirst
Do While Not rstTitles.EOF
Debug.Print rstTitles!Title & " - " & rstTitles!Type
rstTitles.MoveNext
Loop ' 恢复原始数据,因为这只是演示。
rstTitles.MoveFirst
Do Until rstTitles.EOF
If Trim(rstTitles!Type) = "self_help" Then
rstTitles!Type = "psychology"
rstTitles.Update
End If
rstTitles.MoveNext
Loop rstTitles.Close
cnn1.CloseEnd Sub
dim strSql as string
strsql="insert into table1 values(value1,value2)"
strsql=sqlstr & "insert into table1 values(value3,value4)"cnn.begintrans
on error goto ErrBegins
cnn.execute strsql
cnn.commonittrans
exit sub
ErrBegins
msgbox "想写什么就写什么"