Ado对于一个数据库的多个表的密不可分的操作可以用事物处理的方式来实现。
现在我遇到一个问题,有两个数据库A 、B ,现在有一项任务,要求要操作两个数据库,并且这些操作密不可分,请问该如何来做?
例如:我要向A数据库中的t1表中添加一条记录,同时也要向B数据库的t2表中添加一条相关记录,这两个操作密不可分,而且由于实际问题的限制,t1,t2表不可能放到同一个数据库之中。请回答的详细些,不胜感谢!!!!
现在我遇到一个问题,有两个数据库A 、B ,现在有一项任务,要求要操作两个数据库,并且这些操作密不可分,请问该如何来做?
例如:我要向A数据库中的t1表中添加一条记录,同时也要向B数据库的t2表中添加一条相关记录,这两个操作密不可分,而且由于实际问题的限制,t1,t2表不可能放到同一个数据库之中。请回答的详细些,不胜感谢!!!!
cnn.BeginTrans 开始一个事务
cnn.CommitTrans 提交事务
cnn.RollbackTrans 回滚事务
例如:
Private Sub Test()
On Error GoTo PROC_ERR
Dim cnn As Connection
Set cnn = New Connection
cnn.ConnectionString = "Provider=..."
cnn.Open
cnn.BeginTrans '开始事务
cnn.Execute "insert into test (id,name) values (1,'abc')"
cnn.Execute "delete from test where id=3"
'...
cnn.CommitTrans '提交事务
cnn.Close
Set cnn = Nothing
Exit Sub
PROC_ERR:
If Not (cnn Is Nothing) Then
If cnn.State = adStateOpen Then
cnn.RollbackTrans '有错误发生,回滚事务
cnn.Close
End If
End If
Set cnn = Nothing
Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
End Sub不过用ADO连接的事务处理复杂的业务不太方便,建议使用COM+。