照清

用勤奋之这石,补能力之缺口!

导航

PocketPC中SQLCE数据库同步(转共享)

Posted on 2008-06-04 08:11  照清  阅读(942)  评论(0)    收藏  举报
  使用sqlce提供的rdaremote data access)对象很容易实现pocketpc sqlce数据库与pcsql server2000数据库同步,它们之间的同步通过http来传输,因此也必须有后台web服务器。同步传输介质也有多种,如红外、底坐、无线网卡等。同步过程如下图所示:

一、pc服务器端的安装及设置
安装ssceserver1.0

安装并配置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 

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

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

Hellow!