PocketPC中SQLCE数据库同步

    技术2022-05-11  132

      来自www.Move2008.com

      下载PDF文档

    使用SQLCE提供的RDARemote Data Access)对象很容易实现PocketPC SQLCE数据库与PCSQL Server2000数据库同步,它们之间的同步通过HTTP来传输,因此也必须有后台WEB服务器。同步传输介质也有多种,如红外、底坐、无线网卡等。同步过程如下图所示:

    一、PC服务器端的安装及设置

             安装SSCEServer1.0

    1.       安装(下载)

    http://www.microsoft.com/sql/ce/downloads/default.asp  

             安装并配置IIS5.0(或更高版本)

    1.安装

    依次单击开始控制面板,然后单击添加/删除程序 单击添加/删除 Windows 组件。出现 Windows 组件向导。 按照屏幕上的说明安装、删除或添加Internet信息服务(IIS) 组件。 安装好之后,在IE浏览器的地址栏中键入 http://localhost/ 然后按 ENTER,如果有正常显示就说明IIS已安装正确,如遇到问题可查看 IIS 联机文档。  

               2.配置

                打开“控制面板->管理工具-> Internet 信息服务”,设置步骤如下列图所示:

               (1) 增加虚拟目录

     

          (2) 虚拟目录名称为:sqlce

    (3) 填写虚拟目录路径

     

          (4) 设置访问权限(注意:选中“执行(ISAPI应用程序或CGI))

     

          (5) 测试安装是否正确

               打开IE浏览器,在地址栏中输入http://localhost/sqlce/sscesa10.dll

          如果显示为“body”则说明设置正确。

     

    二、PocketPC端的安装

             安装SQLCE1.0  

    从微软网站下载:

    http://download.microsoft.com/download/SQLSVR2000/Utility/3.0/NT5XP/EN-US/sqldash.exe

    解压后运行:C:/sqldash/SQLDash/PPC/PPCSetup.exe  

    或者从www.Move2008.com下载:www.move2008.com/down/download/ssce.ARM720C.CAB

    下载后CopyPocketPC打开安装即可。  

             PocketPC上创建SQLCE数据库

    创建表代码如下:

    Public goADOXcat As ADOXCE.Catalog  

    Set ADOXcat = CreateObject("ADOXCE.Catalog.3.1")

    ADOXcat.Create"Provider=Microsoft.SQLServer.OLEDB.CE.1.0;Data Source=/test"

    三、数据库同步代码(EVB/ASP

           '数据库连接ADO Connection对象

    Public conn As ADOCE.Connection  

    Public LocalConnStr, RemoteConnStr, InternetURL, ServerIP As String  

    '同步前的初使化

    Public Function SyncInit()

        '本地SQLCE连接ConnectString

        LocalConnStr = "Provider=Microsoft.SQLServer.OLEDB.CE.1.0;Data Source=/test"

        Set conn = CreateObject("ADOCE.connection.3.0")

        conn.ConnectionString = LocalConnStr  

        '如果数据库是打开的则先关闭

        If conn.State = 1 Then conn.Close  

        'PC服务器的地址

        ServerIP = "192.168.0.1"   

        '远程SQL Server2000数据库连接地址

        RemoteConnStr = "Provider=sqloledb;Initial Catalog=AircraftMobile;Data Source=" + ServerIP + ";user id=test;password=test;"

        '远程PC机上的SQLCE同步的WEB地址(IIS设置)

        InternetURL = "http://" + ServerIP + "/sqlce/sscesa10.dll"

    end Function  

    '数据同步

    Public Function SyncTable(tablename, sql)

            delTable (tablename)

            Set ceRDA = CreateObject("SSCE.RemoteDataAccess.1.0")

            ceRDA.LocalConnectionString = LocalConnStr

            ceRDA.InternetURL = InternetURL

     

            On Error Resume Next

              PC数据库中的表同步到PocketPC

            ceRDA.Pull tablename, sql, RemoteConnStr, TRACKINGOFF

     

              PocketPC中的数据同步到PC

    此行已注释:goRDA.Push tablename, RemoteConnStr

     

            If ceRDA.ErrorRecords.Count > 0 Then

              For Each gceErr In ceRDA.ErrorRecords

                strErr = ""

                strErr = strErr + "错误号:" + Trim(gceErr.NativeError) + "  "

                strErr = strErr + "目标:" + gceErr.Description + "  "

                MsgBox tablename + ":" + strErr

              Next

            End If

     

            Set ceRDA = Nothing

    End Function

     

    '删除表

    Public Function delTable(tablename)

            Set conn = CreateObject("ADOCE.connection.3.0")

            conn.ConnectionString = "Provider=Microsoft.SQLServer.OLEDB.CE.1.0;Data Source=/test"

            conn.Open

            On Error Resume Next

            conn.Execute ("drop table " + tablename)

            conn.Close

    End Function

     

    '远程操作PC服务器数据库

    function RemoteSQL(sql)

        if trim(sql)<>"" then

            if mid(sql,len(sql),1)<>";" then sql = sql & ";"

            Set ceRDA = CreateObject("SSCE.RemoteDataAccess.1.0")

            ceRDA.InternetURL = InternetURL

            sql = "BEGIN TRANSACTION; Use test;" & sql & "COMMIT TRANSACTION;"

     

            On Error Resume Next

            ceRDA.SubmitSQL sql,RemoteConnStr

            If ceRDA.ErrorRecords.Count > 0 Then

              For Each gceErr In ceRDA.ErrorRecords

                    strErr = ""

                    strErr = strErr & " : " & Trim(gceErr.NativeError) & vbCrLf

                    strErr = strErr & "出错目标: " & gceErr.Description & vbCrLf

                    MsgBox strErr

                Next

            End If

     

            Set ceRDA = Nothing

        end if     

    end function

     

     

    Bedlang

    2002-11-1


    最新回复(0)