圖書外采查重的關鍵是在外采現(xiàn)場能準確獲取館藏圖書數據,避免重復采購。本文設計的圖書外采查重系統(tǒng)基于Windows Mobile智能手機,將嵌入式數據庫SQL Server CE應用到系統(tǒng)設計中,實現(xiàn)智能手機的存儲數據與圖書館數據同步,采購人員由此掌握館藏信息,快速準確地識別和記錄圖書信息,防止圖書重復采購。
1 嵌入式數據庫系統(tǒng)開發(fā)
1.1 SQL Server 2005 Compact Edition
嵌入式數據庫是指可以在嵌入式移動設備上運行的數據庫,SQL Server 2005 Compact Edition(簡稱SQL Server CE)是當前比較流行的嵌入式數據庫系統(tǒng)之一,是運行于Windows Mobile下的關系數據庫系統(tǒng)。SQL Server CE為移動設備提供了一個壓縮的數據庫解決方案,可以將SQL Server 2000/2005(簡稱SQL Server)大型數據庫的管理能力擴展到移動設備上。
SQL Server CE以很小的內存(3 MB~5 MB)開銷提供了精簡的關系數據庫,具有強大的數據存儲、優(yōu)化的查詢處理,以及可靠、可擴展和可調整的連接等功能,并為開發(fā)人員的快速應用程序開發(fā)提供了一致的編程接口(OLEDB、ADO.NET)。SQL Server CE是創(chuàng)建企業(yè)級的 Windows Mobile 離線數據解決方案。
1.2 開發(fā)環(huán)境
智能手機是指具有開放式操作系統(tǒng)的手機,開發(fā)人員可根據操作系統(tǒng)提供的應用編程接口為手機開發(fā)各種擴展功能。智能手機操作系統(tǒng)主要有Symbian、Windows Mobile、Linux、Palm OS、Android、Mac OS X、BlackBerry、OMS等。其中,Windows Mobile是微軟為智能手機推出的操作系統(tǒng),將用戶熟悉的桌面Windows擴展到移動設備上。Windows Mobile操作系統(tǒng)包括Pocket PC、Smart Phone及Pocket PC Phone(簡稱PPC),其中PPC主要用于掌上電腦型智能手機。本文圖書外采查重系統(tǒng)設計就選用PPC平臺。
應用于Windows Mobile智能手機操作系統(tǒng)的開發(fā)語言有Java(J2ME)、C++、Embedded VB、Embedded VC、C#等。圖書外采查重系統(tǒng)選用Visual Studio.NET 2008集成開發(fā)環(huán)境、C#開發(fā)語言。C#是一種強大、簡單、面向對象的編程語言,是微軟新一代開發(fā)工具Visual Studio.NET的經典編程語言,C#既保持了C++的語法,還包含了大量的高效代碼和面向對象特性,為開發(fā)人員帶來更高效的開發(fā)環(huán)境。
微軟在推出智能手機操作系統(tǒng)后,考慮手機的硬件條件制約,推出了.Net Framework的精簡版,這就是.NET Compact Framework[1],在開發(fā)環(huán)境中安裝Visual Studio.NET 2008簡體中文版,同時安裝.NET Compact Framework 3.5以及仿真設備、SDK等。
1.3 客戶端與服務器環(huán)境
SQL Server CE的運行環(huán)境是典型的客戶端/服務器環(huán)境,如圖1所示??蛻舳谁h(huán)境是Windows Mobile應用程序的運行環(huán)境,也是SQL Server CE數據庫的運行環(huán)境,通過微軟Activesync程序(使用USB、串口、藍牙或Wi-Fi網絡)可以將智能手機連接到服務器環(huán)境;服務器環(huán)境是運行Internet信息服務(簡稱IIS)和SQL Server數據庫的環(huán)境,IIS和SQL Server既可以運行在一臺機器上,也可以運行在不同的機器上。SQL Server CE與SQL Server之間可以通過遠程數據訪問RDA(Remote DataAccess)和合并復制(Replication)兩種方式進行數據同步。
[!--empirenews.page--]
1.4 遠程數據訪問RDA
圖書館都有圖書館自動化集成系統(tǒng),數據都存儲在大型數據庫系統(tǒng)中,例如Oracle、SQL Server 2000/2005、Sybase等。在任何一個分布式移動應用環(huán)境中,移動設備與數據中心的數據交互是要解決的重點問題,在系統(tǒng)設計中,如何實現(xiàn)智能手機中的數據庫與圖書館數據庫一致最為關鍵,這就是數據同步。
SQL Server CE數據庫通過IIS和遠程數據訪問RDA與SQL Server數據庫進行通信,遠程數據訪問RDA為智能手機應用程序訪問SQL Server數據庫提供了一種簡單的訪問方式,可以將SQL Server數據庫的數據下載到智能手機的SQL Server CE數據庫中,也可以將智能手機的數據寫入到SQL Server 數據庫中,這樣就實現(xiàn)了數據同步,RDA非常適合開發(fā)離線數據解決方案。
圖書外采查重系統(tǒng)使用遠程數據訪問RDA技術實現(xiàn)了數據同步,RDA主要由SQL Server CE數據庫引擎、SQL Server CE客戶端代理和SQL Server CE服務器端代理三部分組成。并且RDA提供了如下三個主要方法實現(xiàn)SQL Server CE與SQL Server數據同步。
(1)Pull方法:將SQL Server數據庫中的表“拉”到SQL Server CE中。在調用此方法時,可以設置數據跟蹤選項,如果設置數據跟蹤,則SQL Server CE數據庫引擎會自動跟蹤對數據的插入、修改和刪除操作。
(2)Push方法:如果在Pull時設置了數據跟蹤選項,可以將SQL Server CE中的數據“推”回到SQL Server中,在SQL Server CE中對數據的任何修改都會反映到SQL Server中。
(3)SubmitSQL方法:直接向SQL Server數據庫提交一個命令。
2 系統(tǒng)設計與實現(xiàn)
2.1 建立數據庫
嵌入式數據庫SQL Server CE的數據存儲在一個擴展名為.SDF的文件中,SQL Server CE 只支持一次一個鏈接,但多個命令可以共享同一鏈接。.NET Compact Framework下開發(fā)SQL Server CE統(tǒng)一使用System.Data.SqlServerCe.DLL[2],該DLL封裝的命名空間和類是一致的,在VS2008下開發(fā)默認使用的.NET Compact Framework版本是3.5,默認使用的SQL Server CE版本是3.5,一般存放在C:Program FilesMicrosoft SQL Server Compact Editionv3.5Devices路徑下。在智能手機上創(chuàng)建一個空的本地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 數據同步
數據同步功能指通過遠程數據訪問RDA從圖書館自動化集成系統(tǒng)SQL Server數據庫將藏書數據下載到智能手機的LIBRARY.SDF數據庫中。遠程數據訪問RDA需要用到.NET Compact Framework 3.5中System.Data.SqlServerCe命名空間中的SqlCeRemoteDataAccess類[3-4],數據同步程序代碼如下:
//引用命名空間SqlCeRemoteDataAccess
using SqlCeRemoteDataAccess;
//實例化并配置遠程數據訪問
//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 圖書查重設計
通過遠程數據訪問RDA將圖書館自動化集成系統(tǒng)中的藏書數據同步到智能手機的數據庫LIBRARY.SDF中,圖書外采時,智能手機應用程序鏈接SQL Server CE數據庫LIBRARY.SDF,檢索Books數據表中是否有相關圖書記錄。
開發(fā)手機數據庫程序所用到的控件和類與開發(fā)桌面數據庫程序具有相似性,如SqlCeConnection對應SqlConnection,SqlCeDataAdapter對應SqlDataAdapter,SqlCeCommand對應SqlCommand等。圖書外采查重系統(tǒng)基于.NET Compact Framework3.5設計,要在智能手機上創(chuàng)建、管理和查詢SQL Server CE數據庫,必須在程序中添加對System.Data.SqlServerCe的引用,圖書查重程序代碼如下:
//命名空間System.Data.SqlServerCe using System.Data.SqlServerCe;
//創(chuàng)建SqlCeConnection對象,鏈接數據庫文件LIBRARY.SDF
SqlCeConnection objCeConnection=new SqlCeConnection("DATASOURCE="+dbPath+@"LIBRARY.SDF");
objCeConnection.Open(); //根據ISBN號,生成圖書查詢SQL語句
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();
//查詢館藏圖書是否存在
if (!objCedr.Read())
{ listBox.Items.Add("館藏沒有ISBN號=
"+txtISBN.Text+"圖書,可以采購。");}
else
{
listBox.Items.Add("ISBN號:"+objCedr["ISBN"].ToString());
listBox.Items.Add("書名:"+objCedr["Title"].ToString());
listBox.Items.Add("作者:"+objCedr["Author"].ToString());
listBox.Items.Add("出版社:"+objCedr["BookConcern"].ToString());
listBox.Items.Add("藏書數量:"+objCedr["Amount"].ToString()+"本");
listBox.Items.Add("館藏圖書已有,建議不要采購!");
}[!--empirenews.page--]
3 系統(tǒng)應用情況
3.1 系統(tǒng)功能
圖書外采查重系統(tǒng)功能包括圖書查重、參數設置、數據管理等。
參數設置主要是設置遠程訪問SQL Server數據庫的用戶名和密碼,訪問IIS的用戶名和密碼參數,以及系統(tǒng)應用背景圖片、信息提示等,如圖2所示。
圖書查重方式有根據ISBN號查重和根據書名、作者、出版社等組合查重[5],其中根據ISBN號查重方式是主要查重方式。ISBN是國際標準書號International Standard Book Number的簡稱,通常每本書都有全球唯一的ISBN號,通過帶有藍牙接口的條碼槍掃描圖書ISBN條形碼,就可以檢索數據庫中的圖書,如果有,就會顯示館藏圖書的詳細信息,同時發(fā)出“嘀嘀嘀”的語音提示,圖書查重界面如圖3所示。
3.2 系統(tǒng)應用
圖書外采查重系統(tǒng)應用流程是:外出購書前,工作人員將圖書館自動化集成系統(tǒng)中的最新藏書數據同步到智能手機,生成數據庫文件LIBRARY.SDF,拷貝到智能手機存儲卡中。圖書外采時,工作人員在智能手機上通過查重系統(tǒng)檢索LIBRARY.SDF數據庫中是否有相關的圖書記錄,由于查重是在智能手機上進行,不需要網絡連接,因此速度很快。
系統(tǒng)設計成功運行于多普達S700智能手機,操作系統(tǒng)Windows Mobile 6.1簡體中文版,主頻500 MHz,256 MB ROM、128 MB RAM、4 GB存儲卡,2.8英寸、66536色TFT彩色屏幕、分辨率240×320像素。
本文設計的圖書外采查重系統(tǒng)操作簡單、體積小、重量輕、方便攜帶,不需要網絡和外接電源支持(可配多塊電池),省時、省力、準確、高效,可以適應復雜的圖書外采現(xiàn)場,達到事半功倍的效果。應用嵌入式數據庫SQL Server CE存儲數據,數據存儲量大,通過數據同步,智能手機與館藏圖書信息直接對接,準確掌握館藏圖書數據,防止圖書重復采購。系統(tǒng)設備投資不高(一部中檔Windows Mobile智能手機約2 000元左右),收效顯著,是適用于圖書館外采查重的最佳方案。