引言 数据同步已经成为移动计算的一种基础应用模式。但由于在移动环境中设备多样,需要交互的数据也千差万别,再加之连接特性很不稳定,这就要求用标准的方法来实现数据同步,使之能成为移动计算环境中的一个基础设施。我们在Pocket PC 2002中加载了SQL Server CE作为Pocket PC的数据库,在Windows Server 2003中加载了SQL Server 2000作为普通台式计算机的数据库,同时采用了Microsoft Visual Studio .NET 2003作为研究的开发平台,Pocket PC与普通PC计算机之间的数据同步采用xml方式进行。1、搭建平台硬环境及软环境1.1、下载和安装SQL Server CE在微软的相关网站上下载SQL Server CE 2.0或以上的版本,将Pocket PC与桌面计算机正确建立合作关系,进行数据通讯,按要求在桌面计算机上正确安装SQL Server CE,安装时,通过建立的合作关系,安装程序会将SQL Server CE同时安装到Pocket PC 上。1.2、配置基于IIS的Web服务器要想通过Pocket PC直接访问服务器中的SQL Server 2000数据库中的数据,在服务器上必须安装IIS,建立web服务器。正确安装IIS后,还要进行下面的配置:打开“控制面板->Internet信息服务”,设置步骤如下:(1)增加虚拟目录(2)虚拟目录名称为:power(电力)(3)填写虚拟目录路径:将存放SQL Server CE的系统目录下Server于目录作为虚拟目录路径,如:D:/Microsoft SQL Server CE 2.O/Server。该目录下包含sscesa20.dll等文件。(4)设置访问权限:该目录应该设置为读取和写入,执行许可应设置为:脚本和可执行程序。(5)测试SQL Server CE IE安装是否正确:打开IE浏览器,在地址栏中输入http://59.73.195.91/sqlce/sscesa20.dll,其中,59.73.195.91是Web服务器ip地址,系统返回:SQL Server CE Server Agent,则表明设置正确。1.3、在服务器配置SQL Server CESQL Server CE安装后,打开“程序Microsoft SQL Server CE 2.0->Configure Connectivity Support in IIS”,执行Conf- igure Connectivity Support in IIS菜单项,对相关项目进行配置,这样的配置是必须的。2、远程数据访问RDA(Remote Data access)RDA对象,是SQL Server CE自带的,它为Windows CE应用程序访问远程的SQL Server 2000 数据库提供了一种简单的访问方式。利用它可以将存在Pocket PC上的数据直接写入到远程的SQL Server 2000数据库中或将远程的SQL Server 2000数据库的数据下载到Pocket PC中的SQL Server CE数据库中的一个数据表中,这样就实现了数据的交换与同步。安装完SQL Server CE后,我们就可以在开发平台如:Embedded Visual C++或Microsoft Visual Studio.NET 2003中使用RDA对象来访问SQL Server 2000数据库中数据。我们使用的是Microsoft Visual Studio.NET 2003开发平台。RDA对象有许多方法和属性,主要的方法和属性如下:RDA 对象的主要方法(method):
方 法
功 能 说 明
Pull
方法
从Microsoft SQL Server数据库中获取数据.存放在SQL Server CE数据库中的一个表中。注重,该表应是一个不存在的数据表.执行Pull方法后,会自动建立数据表。
3、程序设计采用Microsoft Visual Studio.NET 2003作为开发工具,开发语言是C#,服务器采用Windows Server 2003.数据库采用SQL Server 2000,SQL Server CE 。3.1、在Pocket PC上创建SQL Server CE数据库SQL Server CE 中的数据库是存储结构化数据的表集合。在可以存储数据库之前,必须创建数据库。在创建数据库之后,可以创建保存数据的表。首先在Pocket PC上创建一个名为PowerDB.sdf的SQL Server CE数据库。3.2、创建WalkThrough类public class WalkThrough
{
static void Main()
{
SqlCeConnection conn = null;
if (File.Exists ("PowerDB.sdf"))//判定
File.Delete ("PowerDB.sdf");
SqlCeEngine engine = new SqlCeEngine ("Data Source = PowerDB.sdf");//创建空数据库
engine.CreateDatabase ();
conn = new SqlCeConnection ("Data Source = PowerDB.sdf");//连接到新数据库
FileStream FsXML = new FileStream(xmlFileName,FileMode.Open);
FileStream FsXSD = new FileStream(xsdFileName,FileMode.Open);
XmlTextReader xtrXSD = new
XmlTextReader(FsXSD);
synDS.ReadXmlSchema(xtrXSD);
xtrXSD.Close();
FsXSD.Close();
XmlTextReader xtrXML = new XmlTextReader(FsXML);
synDS.ReadXml(xtrXML);
xtrXML.Close();
FsXML.Close();
DataTable dt=synDS.Tables["SynCon"];//定义数据集中的表
//为控件获取数据绑定
Text.DataBindings.Add(newBinding("Text
",dt,"name")); }(2)数据同步[2]方法:数据下载(同步到本机)与上传(同步到服务器)笔者利用RDA的Push和Pull方法.分别实现了将掌上电脑上的SQL Server CE数据库的数据上传到PC服务器上的SQL Server 2000数据库中.及将PC上SQL Server 2000数据库中数据下载到掌上电脑的SQL Server CE数据库中。将SQL Sever 2000数据库中PowerDB的表中数据下载到SQL Server CE数据库中同名的表中:下面我们介绍一下这两种方法:rdaPush();//数据上传方法