嵌入式SQL CE在圖書(shū)外采查重系統中的應用
1.4 遠程數據訪(fǎng)問(wèn)RDA
圖書(shū)館都有圖書(shū)館自動(dòng)化集成系統,數據都存儲在大型數據庫系統中,例如Oracle、SQL Server 2000/2005、Sybase等。在任何一個(gè)分布式移動(dòng)應用環(huán)境中,移動(dòng)設備與數據中心的數據交互是要解決的重點(diǎn)問(wèn)題,在系統設計中,如何實(shí)現智能手機中的數據庫與圖書(shū)館數據庫一致最為關(guān)鍵,這就是數據同步。
SQL Server CE數據庫通過(guò)IIS和遠程數據訪(fǎng)問(wèn)RDA與SQL Server數據庫進(jìn)行通信,遠程數據訪(fǎng)問(wèn)RDA為智能手機應用程序訪(fǎng)問(wèn)SQL Server數據庫提供了一種簡(jiǎn)單的訪(fǎng)問(wèn)方式,可以將SQL Server數據庫的數據下載到智能手機的SQL Server CE數據庫中,也可以將智能手機的數據寫(xiě)入到SQL Server 數據庫中,這樣就實(shí)現了數據同步,RDA非常適合開(kāi)發(fā)離線(xiàn)數據解決方案。
圖書(shū)外采查重系統使用遠程數據訪(fǎng)問(wèn)RDA技術(shù)實(shí)現了數據同步,RDA主要由SQL Server CE數據庫引擎、SQL Server CE客戶(hù)端代理和SQL Server CE服務(wù)器端代理三部分組成。并且RDA提供了如下三個(gè)主要方法實(shí)現SQL Server CE與SQL Server數據同步。
(1)Pull方法:將SQL Server數據庫中的表“拉”到SQL Server CE中。在調用此方法時(shí),可以設置數據跟蹤選項,如果設置數據跟蹤,則SQL Server CE數據庫引擎會(huì )自動(dòng)跟蹤對數據的插入、修改和刪除操作。
(2)Push方法:如果在Pull時(shí)設置了數據跟蹤選項,可以將SQL Server CE中的數據“推”回到SQL Server中,在SQL Server CE中對數據的任何修改都會(huì )反映到SQL Server中。
(3)SubmitSQL方法:直接向SQL Server數據庫提交一個(gè)命令。
2 系統設計與實(shí)現
2.1 建立數據庫
嵌入式數據庫SQL Server CE的數據存儲在一個(gè)擴展名為.SDF的文件中,SQL Server CE 只支持一次一個(gè)鏈接,但多個(gè)命令可以共享同一鏈接。.NET Compact Framework下開(kāi)發(fā)SQL Server CE統一使用System.Data.SqlServerCe.DLL[2],該DLL封裝的命名空間和類(lèi)是一致的,在VS2008下開(kāi)發(fā)默認使用的.NET Compact Framework版本是3.5,默認使用的SQL Server CE版本是3.5,一般存放在C:Program FilesMicrosoft SQL Server Compact Editionv3.5Devices路徑下。在智能手機上創(chuàng )建一個(gè)空的本地SQL Server CE數據庫,建立數據庫程序代碼如下:
//創(chuàng )建SQL Server CE數據庫文件LIBRARY.SDF
using System.Data.SqlServerCe;
string strConn=DATASOURCE=+dbPath+@LIBRARY.SDF;
SqlCeEngine engine=new SqlCeEngine(strConn);
engine.CreateDatabase();
engine.Dispose();
2.2 數據同步
數據同步功能指通過(guò)遠程數據訪(fǎng)問(wèn)RDA從圖書(shū)館自動(dòng)化集成系統SQL Server數據庫將藏書(shū)數據下載到智能手機的LIBRARY.SDF數據庫中。遠程數據訪(fǎng)問(wèn)RDA需要用到.NET Compact Framework 3.5中System.Data.SqlServerCe命名空間中的SqlCeRemoteDataAccess類(lèi)[3-4],數據同步程序代碼如下:
//引用命名空間SqlCeRemoteDataAccess
using SqlCeRemoteDataAccess;
//實(shí)例化并配置遠程數據訪(fǎng)問(wèn)
//SQLCeRemoteDataAccess對象
SqlCeRemoteDataAccess rda=new SqlCeRemoteDataAccess();
rda.InternetUrl=http://216.210.98.2/SQLServerMobile/
SQLcesa30.dll;
rda.InternetLogin=IISUserName;
rda.InternetPassword=IISPassword;
rda.LocalConnectionString=DATASOURCE=+dbPath+
@LIBRARY.SDF;
//從SQL Server數據庫中同步數據
rda.Pull(Books,SELECT ISBN,Title,Author,BookConcern,Amount FROM Books,Provider=SQLOledb;Server=LIS_Server;Database=LIS;uid=GD;pwd=GD;,RdaTrackOption.TrackingOnWithIndexes,ErrorTable);
2.3 圖書(shū)查重設計
通過(guò)遠程數據訪(fǎng)問(wèn)RDA將圖書(shū)館自動(dòng)化集成系統中的藏書(shū)數據同步到智能手機的數據庫LIBRARY.SDF中,圖書(shū)外采時(shí),智能手機應用程序鏈接SQL Server CE數據庫LIBRARY.SDF,檢索Books數據表中是否有相關(guān)圖書(shū)記錄。
開(kāi)發(fā)手機數據庫程序所用到的控件和類(lèi)與開(kāi)發(fā)桌面數據庫程序具有相似性,如SqlCeConnection對應SqlConnection,SqlCeDataAdapter對應SqlDataAdapter,SqlCeCommand對應SqlCommand等。圖書(shū)外采查重系統基于.NET Compact Framework3.5設計,要在智能手機上創(chuàng )建、管理和查詢(xún)SQL Server CE數據庫,必須在程序中添加對System.Data.SqlServerCe的引用,圖書(shū)查重程序代碼如下:
//命名空間System.Data.SqlServerCe using System.Data.SqlServerCe;
//創(chuàng )建SqlCeConnection對象,鏈接數據庫文件LIBRARY.SDF
SqlCeConnection objCeConnection=new SqlCeConnection(DATASOURCE=+dbPath+@LIBRARY.SDF);
objCeConnection.Open(); //根據ISBN號,生成圖書(shū)查詢(xún)SQL語(yǔ)句
SQLText = SELECT×FROM Books WHERE ISBN=+txtISBN.Text;
//創(chuàng )建SqlCeCommand對象
SqlCeCommand objCeCommand=new SqlCeCommand(objCeConnection);
objCeCommand.CommandText=SQLText;
//創(chuàng )建SqlCeDataReader對象
SqlCeDataReader objCedr=objCeCommand.ExecuteReader();
//查詢(xún)館藏圖書(shū)是否存在
if (!objCedr.Read())
{ listBox.Items.Add(館藏沒(méi)有ISBN號=
+txtISBN.Text+圖書(shū),可以采購。);}
else
{
listBox.Items.Add(ISBN號:+objCedr[ISBN].ToString());
listBox.Items.Add(書(shū)名:+objCedr[Title].ToString());
listBox.Items.Add(作者:+objCedr[Author].ToString());
listBox.Items.Add(出版社:+objCedr[BookConcern].ToString());
listBox.Items.Add(藏書(shū)數量:+objCedr[Amount].ToString()+本);
listBox.Items.Add(館藏圖書(shū)已有,建議不要采購!);
}
c++相關(guān)文章:c++教程
評論