Ado对于一个数据库的多个表的密不可分的操作可以用事物处理的方式来实现。
现在我遇到一个问题,有两个数据库A 、B ,现在有一项任务,要求要操作两个数据库,并且这些操作密不可分,请问该如何来做?
例如:我要向A数据库中的t1表中添加一条记录,同时也要向B数据库的t2表中添加一条相关记录,这两个操作密不可分,而且由于实际问题的限制,t1,t2表不可能放到同一个数据库之中。请回答的详细些,不胜感谢!!!!

解决方案 »

  1.   

    事物用连接来处理。
    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+。