上一篇总结了WinCE通过WebService进行数据通讯的交互方式,今天整理个SqlCE数据同步方式的内容。先说下软件环境:终端平台使用WinCE5.0+SqlCE2.0,服务器使用Windows server 2003+Sql Server2000 sp4,Dot Net Framwork 使用的是2.0版本。

SQL Server CE与SQL Server之间通过RDA合并复制进行数据同步。Remote data access(RDA)主要由三部分组成:SQL Server CE Database Engine、SQL Server CE Client Agent和SQL Server CE DataBase Agent。SQL Server CE数据库引擎负责写入和读取SQL Server CE数据库中的数据;SQL Server CE客户端代理是RDA在移动设备上的主要组件,它实现了RDA的主要功能,我们可以通过程序调用它提供的接口以控制RDA;SQL Server CE服务器端代理位于服务器端,它与SQL Server CE客户端代理通过HTTP协议进行通信,接收并处理SQL Server CE客户端代理的命令。其通讯原理结构如下图:

数据同步的环境配置工作也分为:终端SqlCE配置、IIS代理配置。

终端SqlCE配置:安装终端与PC的同步程序MicrosoftActiveSync,找到VS2005安装目录D:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v2.0\wce400\armv4下的sqlce20.dev.ppc.wce4.armv4.CAB和sqlce20.ppc.wce4.armv4.CAB,拷贝至终端WinCE系统中,在终端安装这两个包,安装后在终端的Windows目录下将增加了三个文件:Ssce20.dll、Ssceca20.dll和Sscemw20.dll。在Windows目录下增加了一个目录SqlCE 2.0,其中的isqlw20.exe即是在WinCE下运行的类似SqlServer2000的查询分析器程序,也可以在烧制WinCE操作系统时把SqlCE烧制进系统中。

IIS代理配置:IIS代理服务器若要进行GPRS通讯,最好能有静态IP。代理服务器上先安装好IIS和SqlServer2000,在IIS代理服务器上安装Sql Server CE2.0,安装过程中会出现配置选项

这里输入虚拟目录的别名和SqlCE的安装目录,我输入的虚拟目录名是SqlCE20,因为我还配置了一个SqlCE3.0的版本 :-) 继续

选择匿名就可以了,安全要求高的可以设置密码访问,做个匿名的先。完成安装后,在IE上输入http://localhost/sqlCE20/sscesa20.dll ,若显示“SQL Server CE Server Agent”则说明安装配置IIS成功。这里安装要注意的问题是sqlServer2000的补丁要和sqlCE2.0的补丁版本一致。

开始编写代码,新建项目智能设备Windows CE5.0应用程序,添加sqlCE2.0引用,注意VS2005默认的sqlce引用是3.0版本的,所以这里要添加浏览引用,位置是D:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v2.0\System.Data.SqlServerCe.dll。添加代码引用:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.Reflection; 设置数据连接及相关连接属性 private string AppPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());//程序运行目录
private SqlCeCommand cmd = new SqlCeCommand();
private SqlCeConnection con = new SqlCeConnection();
private string dataBaseName = "test.sdf";
private string dbFile = string.Empty;
private string internetURL = "http://192.168.1.187/sqlce20/sscesa20.dll; //IIS代理服务器
private string remoteConStr = "Provider=sqloledb;Data Source=(local);Initial Catalog=test;User Id=sa; Password=sa;";//IIS代理服务器上能访问到的数据库配置
private SqlCeEngine se = new SqlCeEngine();
private SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess(); 窗体加载项 private void Form1_Load(object sender, EventArgs e)
{
this.dbFile = this.AppPath + @"\" + this.dataBaseName;//数据库
string str = "DataSource=" + this.dbFile;
this.con.ConnectionString = str;//终端数据库配置
this.rda.InternetLogin = "";//访问IIS代理服务器的用户
this.rda.InternetPassword = "";//访问IIS代理服务器的密码
this.rda.InternetUrl = this.internetURL;//服务器数据库配置
this.rda.LocalConnectionString = str;//终端数据库配置
} 下载 private void btnPull_Click(object sender, EventArgs e)
{
try
{
this.ExecuteSql("drop table gdinfos");//先要删除本地数据表如果存在的话,否则会报错
int tickCount = Environment.TickCount;
this.rda.Pull("gdinfos", "select * from gdinfos", this.remoteConStr, RdaTrackOption.TrackingOnWithIndexes);
int num2 = Environment.TickCount - tickCount;
MessageBox.Show(string.Format("下载成功\n用时{0}毫秒", num2));
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
} 上传 private void btnPush_Click(object sender, EventArgs e)
{
try
{
int tickCount = Environment.TickCount;
this.rda.Push("gdinfos", this.remoteConStr);
int num2 = Environment.TickCount - tickCount;
MessageBox.Show(string.Format("上传成功\n用时{0}毫秒", num2));
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

WinCE数据通讯之SqlCE数据同步篇的更多相关文章

  1. Android Wear开发 - 数据通讯 - 第二节 : 数据的发送与接收

    本节由介绍3种数据的发送接收:1.Data Items : 比特类型数据,限制100KB以内2.Assets : 资源类型数据,大小无上限3.Message : 发送消息,触发指令 http://de ...

  2. WinCE数据通讯之Web Service篇

    准备写个WinCE平台与数据库服务器数据通讯交互方面的专题文章,今天先整理个Web Service通讯方式. 公司目前的硬件产品平台是WinCE5.0,数据通讯是连接服务器与终端的桥梁,关系着终端的数 ...

  3. WinCE数据通讯之Web Service分包传输篇

    前面写过<WinCE数据通讯之Web Service篇>那篇对于数据量不是很大的情况下单包传输是可以了,但是对于大数据量的情况下WinCE终端的内存往往会在解包或者接受数据时产生内存溢出. ...

  4. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  5. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

    今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 De ...

  6. 通过 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  7. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...

  8. 【cocos2d-x + Lua(2) C++和lua数据通讯之间的互调】

    我们主要解决如下几个问题: 转载注明出处:http://www.cnblogs.com/zisou/p/cocos2dx-lua2.html 1,C++如何获取Lua里面的一个变量值? 2,C++如何 ...

  9. [转]WINDOW进程间数据通讯以及共享内存

    1.引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效地进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...

随机推荐

  1. 【pentaho】【kettle】【Data Integration】试用

    要做数据分析,领导让研究一下kettle. 先占个坑. 这里有个3.0的文档: http://wenku.baidu.com/link?url=hvw_cOBIXLXSGvftkGhXQic3CLC7 ...

  2. golang zlib 压缩,解压缩

    package main import ( "bytes" "compress/zlib" "fmt" "io" &qu ...

  3. ssm之mapper异常 Result Maps collection already contains value for com.ssj.mapper.UserMapper 和 Type interface com.ssj.mapper.UserMapper is already known to the MapperRegistry.

    异常一:Result Maps collection already contains value for com.ssj.mapper.XXXMapper 原因分析:XXXmapper.xml文件中 ...

  4. 从CPU/OS到虚拟机和云计算

      从CPU/OS到虚拟机和云计算  作者:张冬            关于软硬件谁为主导这个话题,套用一句谚语就是三十年河东三十年河西.风水轮流转.软件和硬件一定是相互促进.相互拆台又相互搭台的. ...

  5. jQuery HTML操作学习笔记

    学习资料 jQuery教程 获取 1.获取.设置元素的内容 1.1获取或设置目标元素的文本内容 语法 $(selector).text(); 获取元素文本内容 $(selector).text(con ...

  6. td中不包含汉字的字符串不换行,包含汉字的能换行的问题原因及解决方法

    今天项目中遇到一个问题,一长串的字符串如:003403FF0014E54016030CC655BC3242,但是如:中国河北省石家庄市裕华区槐安路雅清街交口 这样的就可以换行. 原因是:英文字母之间如 ...

  7. HDU 1950 Bridging signals(LIS)

    最长上升子序列(LIS)的典型变形,O(n^2)的动归会超时.LIS问题可以优化为nlogn的算法. 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则记录最小的那个最末元 ...

  8. HDU - 2732 Leapin' Lizards (拆点最大流)

    题意:有N*M的矩形,每个格点有一个柱子,每根柱子有高度c,允许蜥蜴经过这根柱子c次,开始有一些蜥蜴在某些柱子上,它们要跳出这个矩形,每步最大能跳d个单位,求最少有多少蜥蜴不能跳出这个矩形. 分析:转 ...

  9. zookeeper 监听事件 PathChildrenCacheListener

    zookeeper 监听事件 PathChildrenCacheListener PathChildrenCacheListener一次父节点注册,监听每次子节点操作,不监听自身和查询. 1.测试类: ...

  10. Tomcat之并发优化

    1.位置:      (1)/opt/tomcat7/conf下的server.xml文件中<Connector>节点的配置优化,记得先备份.      (2)出厂默认(在server.x ...