新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式SQL CE在圖書(shū)外采查重系統(tǒng)中的應(yīng)用

        嵌入式SQL CE在圖書(shū)外采查重系統(tǒng)中的應(yīng)用

        作者: 時(shí)間:2010-07-12 來(lái)源:網(wǎng)絡(luò) 收藏

        1.4 遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA
        館都有館自動(dòng)化集成,數(shù)據(jù)都存儲(chǔ)在大型中,例如Oracle、 2000/2005、Sybase等。在任何一個(gè)分布式移動(dòng)環(huán)境中,移動(dòng)設(shè)備與數(shù)據(jù)中心的數(shù)據(jù)交互是要解決的重點(diǎn)問(wèn)題,在設(shè)計(jì)中,如何實(shí)現(xiàn)智能手機(jī)中的一致最為關(guān)鍵,這就是數(shù)據(jù)同步。
        數(shù)據(jù)庫(kù)通過(guò)IIS和遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA與 數(shù)據(jù)庫(kù)進(jìn)行通信,遠(yuǎn)程數(shù)據(jù)訪問(wèn)RDA為智能手機(jī)程序訪問(wèn)SQL Server數(shù)據(jù)庫(kù)提供了一種簡(jiǎn)單的訪問(wèn)方式,可以將SQL Server數(shù)據(jù)庫(kù)的數(shù)據(jù)下載到智能手機(jī)的SQL Server 數(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 數(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 FilesMicrosoft SQL Server Compact Editionv3.5Devices路徑下。在智能手機(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ī)程序鏈接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)!);
        }

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        c++相關(guān)文章:c++教程




        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 旌德县| 临沂市| 博湖县| 肃南| 诸城市| 澄江县| 宣化县| 商城县| 瓮安县| 巴南区| 栾城县| 永吉县| 武宁县| 南昌县| 凤阳县| 拜泉县| 锦州市| 读书| 黄龙县| 德庆县| 凤阳县| 甘谷县| 海口市| 永吉县| 独山县| 长治市| 图木舒克市| 佳木斯市| 磐安县| 利津县| 北辰区| 沁阳市| 玛曲县| 饶河县| 宜春市| 弥渡县| 丹寨县| 黄龙县| 康定县| 昌宁县| 肇庆市|