中间件从数据库中读取数据库后,如何传递RecordSet数据给客户端,而当客户端对recordset信息进行插入删除和更新时,又如何反应到数据库中呢?非得要把Recordset数据变成数据,然后在客户端判断哪些数据已经更新过,然后再传递回到中间件,再更新到数据库中?

解决方案 »

  1.   

    举个例子
    你要分成逻辑层和数据访问层,将数据库表与类进行一一映射
    根据情况使用记录集
    Public Function Add(ByVal Username As String, ByVal Password As String)
    On Error GoTo ErrorHandler
    Dim objCtx As ObjectContext
    Set objCtx = GetObjectContext()
    Dim strSql As String
    strSql = "insert into users(name,password) values('" + Username + "','" + Password + "')"
    End FunctionPublic Function Login(ByVal Username As String, ByVal Password As String) As ADODB.Recordset
    Dim strSql As String
    On Error GoTo err
    Dim objCtx As ObjectContext
    Set objCtx = GetObjectContext()
    strSql = "select * from users where Username='" + Username + "' and password='" + Password + "'"
    Dim conn As ADODB.Connection
    Set conn = OpenConnection()
    Dim rs As ADODB.Recordset
    'Set rs = New ADODB.Recordset
    'rs.Open strSql, conn
    Set rs = conn.Execute(strSql)Set Login = rsIf Not conn Is Nothing Then
       Set conn = Nothing
    End IfIf Not objCtx Is Nothing Then
        objCtx.SetComplete
    End If
    Exit Functionerr:
    If Not conn Is Nothing Then
       Set conn = Nothing
    End IfIf Not objCtx Is Nothing Then
        objCtx.SetAbort
    End If
    err.Raise err.Number, "UsersDataService.UsersData.Login", err.Description
    End Functionform中
    Private Sub cmdOk_Click()
      Dim strerr As String
         
      On Error GoTo Errorhandle
        Dim rsuser As ADODB.Recordset
        '直接调用数据层
        Dim users As UsersDataService.UsersData
        Set users = New UsersDataService.UsersData
        Set rsuser = users.Login(Trim(TxtUserName.Text), Trim(TxtPassword.Text))
        If rsuser.EOF Then
            strerr = "无效的用户名或密码"
        Else
            strerr = "登陆成功"
            UserName = Trim(rsuser.Fields("username"))
            Password = Trim(rsuser.Fields("password"))
        End If
        
        If Not rsuser Is Nothing Then
            If rsuser.State = 1 Then
                rsuser.Close
            End If
            Set rsuser = Nothing
        End If
        
        If strerr = "登陆成功" Then
            IsSuccess = True
            Me.Hide
        Else
            Ct = Ct + 1
            If Ct = 3 Then
              cmdCancel_Click
              Exit Sub
            End If
            MsgBox strerr, vbOKOnly, "登录"
        End If
      MousePointer = 0
     Exit SubErrorhandle:
    If Not rsuser Is Nothing Then
            If rsuser.State = 1 Then
                rsuser.Close
            End If
            Set rsuser = Nothing
        End IfMousePointer = 0MsgBox Err.Description, vbInformation, Err.Source
    End Sub
      

  2.   

    服务器端
    类名svrmgr.BaseCls
    方法
    function GetData() as adodb.recordset
         dim rs
         ......
         set GetData=rs
    end function
    客户端
    set obj=createobject("svrmgr.BaseCls","servername")
    set rsList=obj.GetData()
      

  3.   

    gdos(gdos)  说的实现方法不知如何部署
    这个问题困绕我很长时间了
    特别是我想用ActiveX EXE 作为服务器端
    请指教ActiveX EXE、ActiveX dll服务器与客户端的部署方法
    我在www.freewebs.com/xshlm上放了一个代码(dcom),我不知如何部署到局域网上在csdn上问了几个月,看了好多资料就是不知怎么做
    我的[email protected]
    请不惜赐教