摘 要: 將嵌入式數(shù)據(jù)庫(kù)SQL Server CE應(yīng)用于圖書(shū)外采查重系統(tǒng),。介紹了Windows Mobile與SQL Server CE相結(jié)合的信息系統(tǒng)設(shè)計(jì)過(guò)程,包括數(shù)據(jù)庫(kù)建立,、開(kāi)發(fā)環(huán)境以及客戶端與服務(wù)器環(huán)境搭建,。詳細(xì)闡述了基于遠(yuǎn)程數(shù)據(jù)訪問(wèn)的數(shù)據(jù)同步實(shí)現(xiàn),圖書(shū)查重系統(tǒng)設(shè)計(jì)方法,。對(duì)嵌入式系統(tǒng)的開(kāi)發(fā)具有一定的參考價(jià)值,。
關(guān)鍵詞: 嵌入式數(shù)據(jù)庫(kù);SQL Server CE,;數(shù)據(jù)同步,;遠(yuǎn)程數(shù)據(jù)訪問(wèn);圖書(shū)外采,;查重
圖書(shū)采購(gòu)是圖書(shū)館日常工作的重要內(nèi)容,,隨著讀者信息需求的不斷提高,圖書(shū)館需要到書(shū)市或書(shū)店現(xiàn)場(chǎng)采購(gòu)圖書(shū),,面對(duì)大量不同專業(yè)和類別的圖書(shū),,很容易重復(fù)采購(gòu)。目前圖書(shū)外采查重方法有人工記憶查重,、計(jì)算機(jī)二次查重,、筆記本電腦查重、數(shù)據(jù)采集器查重,、遠(yuǎn)程登錄查重等,。但在圖書(shū)外采現(xiàn)場(chǎng),由于空間狹窄,,缺乏網(wǎng)絡(luò)和電源支持,,常用的幾種查重方法都各有優(yōu)缺點(diǎn)。
圖書(shū)外采查重的關(guān)鍵是在外采現(xiàn)場(chǎng)能準(zhǔn)確獲取館藏圖書(shū)數(shù)據(jù),,避免重復(fù)采購(gòu),。本文設(shè)計(jì)的圖書(shū)外采查重系統(tǒng)基于Windows Mobile智能手機(jī),將嵌入式數(shù)據(jù)庫(kù)SQL Server CE應(yīng)用到系統(tǒng)設(shè)計(jì)中,,實(shí)現(xiàn)智能手機(jī)的存儲(chǔ)數(shù)據(jù)與圖書(shū)館數(shù)據(jù)同步,,采購(gòu)人員由此掌握館藏信息,快速準(zhǔn)確地識(shí)別和記錄圖書(shū)信息,,防止圖書(shū)重復(fù)采購(gòu),。
1 嵌入式數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)
1.1 SQL Server 2005 Compact Edition
嵌入式數(shù)據(jù)庫(kù)是指可以在嵌入式移動(dòng)設(shè)備上運(yùn)行的數(shù)據(jù)庫(kù),SQL Server 2005 Compact Edition(簡(jiǎn)稱SQL Server CE)是當(dāng)前比較流行的嵌入式數(shù)據(jù)庫(kù)系統(tǒng)之一,,是運(yùn)行于Windows Mobile下的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),。SQL Server CE為移動(dòng)設(shè)備提供了一個(gè)壓縮的數(shù)據(jù)庫(kù)解決方案,可以將SQL Server 2000/2005(簡(jiǎn)稱SQL Server)大型數(shù)據(jù)庫(kù)的管理能力擴(kuò)展到移動(dòng)設(shè)備上,。
SQL Server CE以很小的內(nèi)存(3 MB~5 MB)開(kāi)銷提供了精簡(jiǎn)的關(guān)系數(shù)據(jù)庫(kù),,具有強(qiáng)大的數(shù)據(jù)存儲(chǔ)、優(yōu)化的查詢處理,,以及可靠,、可擴(kuò)展和可調(diào)整的連接等功能,并為開(kāi)發(fā)人員的快速應(yīng)用程序開(kāi)發(fā)提供了一致的編程接口(OLEDB,、ADO.NET),。SQL Server CE是創(chuàng)建企業(yè)級(jí)的 Windows Mobile 離線數(shù)據(jù)解決方案。
1.2 開(kāi)發(fā)環(huán)境
智能手機(jī)是指具有開(kāi)放式操作系統(tǒng)的手機(jī),,開(kāi)發(fā)人員可根據(jù)操作系統(tǒng)提供的應(yīng)用編程接口為手機(jī)開(kāi)發(fā)各種擴(kuò)展功能,。智能手機(jī)操作系統(tǒng)主要有Symbian,、Windows Mobile、Linux,、Palm OS,、Android、Mac OS X,、BlackBerry,、OMS等。其中,,Windows Mobile是微軟為智能手機(jī)推出的操作系統(tǒng),,將用戶熟悉的桌面Windows擴(kuò)展到移動(dòng)設(shè)備上。Windows Mobile操作系統(tǒng)包括Pocket PC,、Smart Phone及Pocket PC Phone(簡(jiǎn)稱PPC),,其中PPC主要用于掌上電腦型智能手機(jī)。本文圖書(shū)外采查重系統(tǒng)設(shè)計(jì)就選用PPC平臺(tái),。
應(yīng)用于Windows Mobile智能手機(jī)操作系統(tǒng)的開(kāi)發(fā)語(yǔ)言有Java(J2ME),、C++、Embedded VB,、Embedded VC,、C#等。圖書(shū)外采查重系統(tǒng)選用Visual Studio.NET 2008集成開(kāi)發(fā)環(huán)境,、C#開(kāi)發(fā)語(yǔ)言,。C#是一種強(qiáng)大、簡(jiǎn)單,、面向?qū)ο蟮木幊陶Z(yǔ)言,,是微軟新一代開(kāi)發(fā)工具Visual Studio.NET的經(jīng)典編程語(yǔ)言,C#既保持了C++的語(yǔ)法,,還包含了大量的高效代碼和面向?qū)ο筇匦?,為開(kāi)發(fā)人員帶來(lái)更高效的開(kāi)發(fā)環(huán)境。
微軟在推出智能手機(jī)操作系統(tǒng)后,,考慮手機(jī)的硬件條件制約,,推出了.Net Framework的精簡(jiǎn)版,這就是.NET Compact Framework[1],,在開(kāi)發(fā)環(huán)境中安裝Visual Studio.NET 2008簡(jiǎn)體中文版,,同時(shí)安裝.NET Compact Framework 3.5以及仿真設(shè)備、SDK等,。
1.3 客戶端與服務(wù)器環(huán)境
SQL Server CE的運(yùn)行環(huán)境是典型的客戶端/服務(wù)器環(huán)境,,如圖1所示。客戶端環(huán)境是Windows Mobile應(yīng)用程序的運(yùn)行環(huán)境,,也是SQL Server CE數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境,,通過(guò)微軟Activesync程序(使用USB、串口,、藍(lán)牙或Wi-Fi網(wǎng)絡(luò))可以將智能手機(jī)連接到服務(wù)器環(huán)境,;服務(wù)器環(huán)境是運(yùn)行Internet信息服務(wù)(簡(jiǎn)稱IIS)和SQL Server數(shù)據(jù)庫(kù)的環(huán)境,IIS和SQL Server既可以運(yùn)行在一臺(tái)機(jī)器上,,也可以運(yùn)行在不同的機(jī)器上。SQL Server CE與SQL Server之間可以通過(guò)遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA(Remote DataAccess)和合并復(fù)制(Replication)兩種方式進(jìn)行數(shù)據(jù)同步,。
1.4 遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA
圖書(shū)館都有圖書(shū)館自動(dòng)化集成系統(tǒng),,數(shù)據(jù)都存儲(chǔ)在大型數(shù)據(jù)庫(kù)系統(tǒng)中,例如Oracle,、SQL Server 2000/2005,、Sybase等。在任何一個(gè)分布式移動(dòng)應(yīng)用環(huán)境中,,移動(dòng)設(shè)備與數(shù)據(jù)中心的數(shù)據(jù)交互是要解決的重點(diǎn)問(wèn)題,,在系統(tǒng)設(shè)計(jì)中,如何實(shí)現(xiàn)智能手機(jī)中的數(shù)據(jù)庫(kù)與圖書(shū)館數(shù)據(jù)庫(kù)一致最為關(guān)鍵,,這就是數(shù)據(jù)同步,。
SQL Server CE數(shù)據(jù)庫(kù)通過(guò)IIS和遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA與SQL Server數(shù)據(jù)庫(kù)進(jìn)行通信,遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA為智能手機(jī)應(yīng)用程序訪問(wèn)SQL Server數(shù)據(jù)庫(kù)提供了一種簡(jiǎn)單的訪問(wèn)方式,,可以將SQL Server數(shù)據(jù)庫(kù)的數(shù)據(jù)下載到智能手機(jī)的SQL Server CE數(shù)據(jù)庫(kù)中,,也可以將智能手機(jī)的數(shù)據(jù)寫(xiě)入到SQL Server 數(shù)據(jù)庫(kù)中,這樣就實(shí)現(xiàn)了數(shù)據(jù)同步,,RDA非常適合開(kāi)發(fā)離線數(shù)據(jù)解決方案,。
圖書(shū)外采查重系統(tǒng)使用遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA技術(shù)實(shí)現(xiàn)了數(shù)據(jù)同步,RDA主要由SQL Server CE數(shù)據(jù)庫(kù)引擎,、SQL Server CE客戶端代理和SQL Server CE服務(wù)器端代理三部分組成,。并且RDA提供了如下三個(gè)主要方法實(shí)現(xiàn)SQL Server CE與SQL Server數(shù)據(jù)同步。
(1)Pull方法:將SQL Server數(shù)據(jù)庫(kù)中的表“拉”到SQL Server CE中,。在調(diào)用此方法時(shí),,可以設(shè)置數(shù)據(jù)跟蹤選項(xiàng),如果設(shè)置數(shù)據(jù)跟蹤,,則SQL Server CE數(shù)據(jù)庫(kù)引擎會(huì)自動(dòng)跟蹤對(duì)數(shù)據(jù)的插入,、修改和刪除操作。
(2)Push方法:如果在Pull時(shí)設(shè)置了數(shù)據(jù)跟蹤選項(xiàng),,可以將SQL Server CE中的數(shù)據(jù)“推”回到SQL Server中,,在SQL Server CE中對(duì)數(shù)據(jù)的任何修改都會(huì)反映到SQL Server中。
(3)SubmitSQL方法:直接向SQL Server數(shù)據(jù)庫(kù)提交一個(gè)命令。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 建立數(shù)據(jù)庫(kù)
嵌入式數(shù)據(jù)庫(kù)SQL Server CE的數(shù)據(jù)存儲(chǔ)在一個(gè)擴(kuò)展名為.SDF的文件中,,SQL Server CE 只支持一次一個(gè)鏈接,,但多個(gè)命令可以共享同一鏈接。.NET Compact Framework下開(kāi)發(fā)SQL Server CE統(tǒng)一使用System.Data.SqlServerCe.DLL[2],,該DLL封裝的命名空間和類是一致的,,在VS2008下開(kāi)發(fā)默認(rèn)使用的.NET Compact Framework版本是3.5,默認(rèn)使用的SQL Server CE版本是3.5,,一般存放在C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\路徑下,。在智能手機(jī)上創(chuàng)建一個(gè)空的本地SQL Server CE數(shù)據(jù)庫(kù),建立數(shù)據(jù)庫(kù)程序代碼如下:
//創(chuàng)建SQL Server CE數(shù)據(jù)庫(kù)文件LIBRARY.SDF
using System.Data.SqlServerCe,;
string strConn="DATASOURCE="+dbPath+@"\LIBRARY.SDF",;
SqlCeEngine engine=new SqlCeEngine(strConn);
engine.CreateDatabase(),;
engine.Dispose(),;
2.2 數(shù)據(jù)同步
數(shù)據(jù)同步功能指通過(guò)遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA從圖書(shū)館自動(dòng)化集成系統(tǒng)SQL Server數(shù)據(jù)庫(kù)將藏書(shū)數(shù)據(jù)下載到智能手機(jī)的LIBRARY.SDF數(shù)據(jù)庫(kù)中。遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA需要用到.NET Compact Framework 3.5中System.Data.SqlServerCe命名空間中的SqlCeRemoteDataAccess類[3-4],,數(shù)據(jù)同步程序代碼如下:
//引用命名空間SqlCeRemoteDataAccess
using SqlCeRemoteDataAccess,;
//實(shí)例化并配置遠(yuǎn)程數(shù)據(jù)訪問(wèn)
//SQLCeRemoteDataAccess對(duì)象
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數(shù)據(jù)庫(kù)中同步數(shù)據(jù)
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ū)查重設(shè)計(jì)
通過(guò)遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA將圖書(shū)館自動(dòng)化集成系統(tǒng)中的藏書(shū)數(shù)據(jù)同步到智能手機(jī)的數(shù)據(jù)庫(kù)LIBRARY.SDF中,圖書(shū)外采時(shí),,智能手機(jī)應(yīng)用程序鏈接SQL Server CE數(shù)據(jù)庫(kù)LIBRARY.SDF,,檢索Books數(shù)據(jù)表中是否有相關(guān)圖書(shū)記錄,。
開(kāi)發(fā)手機(jī)數(shù)據(jù)庫(kù)程序所用到的控件和類與開(kāi)發(fā)桌面數(shù)據(jù)庫(kù)程序具有相似性,如SqlCeConnection對(duì)應(yīng)SqlConnection,,SqlCeDataAdapter對(duì)應(yīng)SqlDataAdapter,,SqlCeCommand對(duì)應(yīng)SqlCommand等。圖書(shū)外采查重系統(tǒng)基于.NET Compact Framework3.5設(shè)計(jì),,要在智能手機(jī)上創(chuàng)建,、管理和查詢SQL Server CE數(shù)據(jù)庫(kù),必須在程序中添加對(duì)System.Data.SqlServerCe的引用,,圖書(shū)查重程序代碼如下:
//命名空間System.Data.SqlServerCe using System.Data.SqlServerCe;
//創(chuàng)建SqlCeConnection對(duì)象,,鏈接數(shù)據(jù)庫(kù)文件LIBRARY.SDF
SqlCeConnection objCeConnection=new SqlCeConnection("DATASOURCE="+dbPath+@"\LIBRARY.SDF"),;
objCeConnection.Open(); //根據(jù)ISBN號(hào),,生成圖書(shū)查詢SQL語(yǔ)句
SQLText = "SELECT×FROM Books WHERE ISBN="+txtISBN.Text;
//創(chuàng)建SqlCeCommand對(duì)象
SqlCeCommand objCeCommand=new SqlCeCommand(objCeConnection),;
objCeCommand.CommandText=SQLText,;
//創(chuàng)建SqlCeDataReader對(duì)象
SqlCeDataReader objCedr=objCeCommand.ExecuteReader();
//查詢館藏圖書(shū)是否存在
if (!objCedr.Read())
{ listBox.Items.Add("館藏沒(méi)有ISBN號(hào)=
"+txtISBN.Text+"圖書(shū),,可以采購(gòu),。");}
else
{
listBox.Items.Add("ISBN號(hào):"+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ū)數(shù)量:"+objCedr["Amount"].ToString()+"本"),;
listBox.Items.Add("館藏圖書(shū)已有,建議不要采購(gòu),!"),;
}
3 系統(tǒng)應(yīng)用情況
3.1 系統(tǒng)功能
圖書(shū)外采查重系統(tǒng)功能包括圖書(shū)查重、參數(shù)設(shè)置,、數(shù)據(jù)管理等,。
參數(shù)設(shè)置主要是設(shè)置遠(yuǎn)程訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的用戶名和密碼,訪問(wèn)IIS的用戶名和密碼參數(shù),,以及系統(tǒng)應(yīng)用背景圖片,、信息提示等,如圖2所示,。
圖書(shū)查重方式有根據(jù)ISBN號(hào)查重和根據(jù)書(shū)名,、作者、出版社等組合查重[5],其中根據(jù)ISBN號(hào)查重方式是主要查重方式,。ISBN是國(guó)際標(biāo)準(zhǔn)書(shū)號(hào)International Standard Book Number的簡(jiǎn)稱,,通常每本書(shū)都有全球唯一的ISBN號(hào),通過(guò)帶有藍(lán)牙接口的條碼槍掃描圖書(shū)ISBN條形碼,,就可以檢索數(shù)據(jù)庫(kù)中的圖書(shū),,如果有,就會(huì)顯示館藏圖書(shū)的詳細(xì)信息,,同時(shí)發(fā)出“嘀嘀嘀”的語(yǔ)音提示,,圖書(shū)查重界面如圖3所示。
3.2 系統(tǒng)應(yīng)用
圖書(shū)外采查重系統(tǒng)應(yīng)用流程是:外出購(gòu)書(shū)前,,工作人員將圖書(shū)館自動(dòng)化集成系統(tǒng)中的最新藏書(shū)數(shù)據(jù)同步到智能手機(jī),,生成數(shù)據(jù)庫(kù)文件LIBRARY.SDF,拷貝到智能手機(jī)存儲(chǔ)卡中,。圖書(shū)外采時(shí),,工作人員在智能手機(jī)上通過(guò)查重系統(tǒng)檢索LIBRARY.SDF數(shù)據(jù)庫(kù)中是否有相關(guān)的圖書(shū)記錄,由于查重是在智能手機(jī)上進(jìn)行,,不需要網(wǎng)絡(luò)連接,,因此速度很快。
系統(tǒng)設(shè)計(jì)成功運(yùn)行于多普達(dá)S700智能手機(jī),,操作系統(tǒng)Windows Mobile 6.1簡(jiǎn)體中文版,,主頻500 MHz,256 MB ROM,、128 MB RAM,、4 GB存儲(chǔ)卡,2.8英寸,、66536色TFT彩色屏幕,、分辨率240×320像素。
本文設(shè)計(jì)的圖書(shū)外采查重系統(tǒng)操作簡(jiǎn)單,、體積小,、重量輕、方便攜帶,,不需要網(wǎng)絡(luò)和外接電源支持(可配多塊電池),,省時(shí)、省力,、準(zhǔn)確,、高效,可以適應(yīng)復(fù)雜的圖書(shū)外采現(xiàn)場(chǎng),,達(dá)到事半功倍的效果,。應(yīng)用嵌入式數(shù)據(jù)庫(kù)SQL Server CE存儲(chǔ)數(shù)據(jù),,數(shù)據(jù)存儲(chǔ)量大,通過(guò)數(shù)據(jù)同步,,智能手機(jī)與館藏圖書(shū)信息直接對(duì)接,,準(zhǔn)確掌握館藏圖書(shū)數(shù)據(jù),防止圖書(shū)重復(fù)采購(gòu),。系統(tǒng)設(shè)備投資不高(一部中檔Windows Mobile智能手機(jī)約2 000元左右),,收效顯著,是適用于圖書(shū)館外采查重的最佳方案,。
參考文獻(xiàn)
[1] PAUL Y,,DAVID D著..NET精簡(jiǎn)框架程序設(shè)計(jì)——C#版[M].劉新軍,盛泉,,李辛鶴,,譯.北京:電子工業(yè)出版社,2006.
[2] 顏友寧..Net Compact Framework移動(dòng)開(kāi)發(fā)指南[M].北京:清華大學(xué)出版社,,2006.
[3] 張晶,,李心廣.SQL Server Mobile數(shù)據(jù)庫(kù)的開(kāi)發(fā)與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件,2008(8):48-50.
[4] 呂剛.通用圖書(shū)查重系統(tǒng)研制開(kāi)發(fā)設(shè)計(jì)原理及其實(shí)現(xiàn)方法[J].圖書(shū)館論壇,,2005(2):74-76.
[5] 連宇江.淺論現(xiàn)場(chǎng)圖書(shū)采購(gòu)查重的實(shí)現(xiàn)方式[J].科技文獻(xiàn)信息管理,,2006(1):6-10.
[6] 王輝,馬維華.基于SQL Server CE數(shù)據(jù)同步技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,,2008(4):232-235.