引言 數據同步已經成為移動計算的一種基礎應用模式。但由于在移動環境中設備多樣,需要交互的數據也千差萬別,再加之連接特性很不穩定,這就要求用標準的方法來實現數據同步,使之能成為移動計算環境中的一個基礎設施。我們在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();//數據上傳方法