上一篇总结了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. CF#301 B:School Marks(贪心)

    B:School Marks 有n个测试,已经完成了k个,每个测试得分为a[i],接下来的分数不知道,让我们求出任何一个满足题意的即可,满足题意就是n个测试的得分总和<=x, 中位数>=y ...

  2. PHP的生命周期

    了解PHP生命周期之前,先了解一下apache是怎么和php关联起来的吧~ 1.Apache运行机制剖析 ----------------------------- 总体示意图如下:   Apache ...

  3. Linux NAPI处理流程分析

    2017-05-10 今天重点对linux网络数据包的处理做下分析,但是并不关系到上层协议,仅仅到链路层. 之前转载过一篇文章,对NAPI做了比较详尽的分析,本文结合Linux内核源代码,对当前网络数 ...

  4. virtio前端驱动详解

    2016-11-08 前段时间大致整理了下virtIO后端驱动的工作模式以及原理,今天就从前端驱动的角度描述下目前Linux内核代码中的virtIO驱动是如何配合后端进行工作的. 注:本节代码参考Li ...

  5. 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&代码讲解+资源打包下载】

    一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...

  6. 素数判断 - C语言实现

    除了1和自身之外不能整除其它数, 称之为素数. 最小的素数是2. 没有最大的素数. 1000以内素数, 如下图所示: 关于素数的算法, 一般有2种. 第1种, 给出一个数n(n >= 2), 判 ...

  7. NGS中的一些软件功能介绍

    1.bowtie 短序列比对工具,blast也是短序列比对工具,速度快,结果易理解. 输入可以是fastq或者fasta文件. 生成比对结果文件sam格式的吧. 2.bwa 转自:https://ww ...

  8. 如何将python3.6软件的py文件打包成exe程序

    在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序.在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行 ...

  9. 优化css,增加性能

    转载自:https://www.cnblogs.com/xiaoloulan/p/5801663.html 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如 ...

  10. Scala快速排序

    Scala 快排 Scala 基本思想:经过一趟排序,把待排对象分成两个独立的部分,一部分的数据大(小)于另一部分,同理,对子对象进行如此处理,以达到所有数据都有序.   package studen ...