新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式移動數據庫SQL Server for Windows CE的應用研究

        嵌入式移動數據庫SQL Server for Windows CE的應用研究

        作者: 時間:2009-03-04 來源:網絡 收藏

        1 引言
        系統或簡稱為(EMDBS),是專門運行在各種智能型嵌入設備或設備上的小型系統。目前已經成為一個十分活躍的領域。

        本文引用地址:http://www.104case.com/article/152622.htm

        Microsoft 2000 Edition 2.0版簡稱 2.0,`是用作快速開發的關系型精簡數據庫[1],它將企業數據管理能力擴展到了基于 操作系統的移動設備上。 CE提供遠程數據訪問和合并復制功能,確保了移動設備數據庫中的數據能夠可靠地傳輸、能夠離線操作并在晚些時候與SQL Server服務器同步,這些使得成為移動和無線環境下理想的數據庫。

        本文介紹如何采用基于.NET Compact Framework的ADO.NET技術開發移動設備的數據庫,并將 數據庫于倉庫物料移動巡查系統的設計方案。

        2 .NET 下開發SQL Server CE的方法
        在基于 CE的嵌入式移動設備上開發SQL Server CE數據庫應用可以使用的工具有EVB,EVC和 Visual Studio .NET(vs2003.net或vs2005.net)。使用EVB或EVC時,通過ADOCE或OLE DB SQL Server CE訪問SQL Server CE數據庫,編程比較繁瑣。關于在EVC,EVB下操作數據庫的方法這里不再贅述,具體可參見文獻[2] 。推薦采用Visual Studio.NET,通過ADO.NET技術訪問操作SQL Server CE數據庫。

        Visual Studio.NET開發嵌入式移動設備時采用Smart Device Programmability(SDP,智能設備編程)特性。使用新的C#語言或Visual Basic .NET語言為移動或嵌入式設備開發應用程序。在.NET Compact Framework下通過ADO.NET可方便快捷的訪問SQL Server CE數據庫。下面以Visual Basic.net 2003為例簡述如何通過ADO.NET實現對SQL Server CE數據庫的基本操作。

        首先,必須在項目中添加對System.Data.SqlServerCe組件的引用,System.Data.SqlServerCe 命名空間為 SQL Server CE.NET Framework 精簡版數據提供程序。SQL Server CE.NET Framework精簡版數據提供程序描述了一個類集合,這些類可用于在托管環境下從基于 Windows CE的設備訪問 SQL Server CE 中的數據庫。通過使用System.Data.SqlServerCe,可以在任意設備上創建 SQL Server CE 數據庫,還可以建立指向設備上或遠程服務器上的 SQL Server 數據庫的連接。

        應用開發中,根據不同的需求,從System.Data.SqlServerCe 命名空間中選擇相應的類進行操作。例如:SqlCeEngine類包含了SQL Server CE 引擎的屬性、方法及其他對象,可用來創建一個新的 SQL Server CE 數據庫。代碼示例如下:

        Dim connStr As String = data source=My DocumentsSampleDB.sdf

        Dim SQLEngine As System.Data.SqlServerCe.SqlCeEngine

        SQLEngine = New System.Data.SqlServerCe.Engine (connStr)

        以上代碼完成了在My Documents目錄下創建空的名為SampleDB的數據庫。這里還介紹關于一個比較常用的類――SqlCeCommand,可用來表示對數據源執行的 SQL 語句。當需要向已創建的數據庫SampleDB添加一個名為Bicycle的庫存表,并定義它的相關字段時可用以下代碼實現,其中cn定義了數據源的連接,使用了SqlCeConnection類:

        Dim cn As System.Data.SqlServerCe.SqlCeConnection

        cn = New System.Data.SqlServerCe.SqlCeConnection(connStr)

        Dim cmd As New System.Data.SqlServerCe.SqlCeCommand(SQLStr, cn)

        SQLStr = CREATE TABLE Bicycle (BicycleID Smallint Primary Key _

        NOT NULL,CompanyName nvarchar(40) NOT NULL, Number int NOT NULL)

        cmd.CommandText = SQLStr

        cmd.Connection = cn

        cn.Open()

        cmd.ExecuteNonQuery()

        cmd.Connection.Close()

        在手持設備上用代碼方式或用SQLCE Query創建編輯表單是比較麻煩的過程,在實際應用中的做法是在初始化時只建立空的數據庫,需要的表單采用RDA(遠程數據訪問)的Pull方法從SQL Server 2000服務器上“拉”到先前創建的數據庫中。

        3 SQL Server CE 數據庫在倉庫物料巡查系統中的應用
        倉庫物料巡查傳統上采用的是紙張作業方式,操作流程是倉庫巡查人員領取物資清單后在出入口進行檢查和填寫記錄,然后將填好的表格回收到數據中心,數據中心的工作人員再手工將信息錄入計算機系統進行處理。缺點是處理周期長,工作人員工作量大,費時費力且容易發生人為錯誤。移動解決方案中,倉庫巡查人員只需下載對應物料清單到手持PDA上,選用的PDA采用Windows CE操作系統。對照此清單檢查,現場直接在PDA上記錄,然后將結果上傳。資料的主要處理過程主要在后端SQL Server 2000服務器端處理,包括進出物料表單的錄入,檢查結果報表的處理、數據維護等。自動化程度高,減少了手工錄入處理環節,PDA具備無線上網功能后可無限擴展系統的覆蓋范圍。

        因為需要下載物料清單到PDA上,并在PDA上臨時保存物料清單,所以在PDA上需要有一個數據庫系統。選擇的系統即為SQL Server CE 2.0。同時,系統需要考慮手持PDA上SQL Server CE 2.0與數據中心SQL Server 2000進行雙向的數據同步問題。

        4 SQL Server CE 2.0與SQL Server 2000數據同步設計
        SQL Server CE與SQL Server之間可以通過RDA(遠程數據訪問)和Replication(合并復制)兩種方式進行數據同步。

        SQL Server CE 2.0復制功能基于 Microsoft SQL Server 合并復制。只能與SQL Server 2000配合使用。允許分別在便攜式設備和服務器上自行更新數據。之后可以對該設備和服務器上的數據進行同步,以將客戶端的更改發送到服務器,或從服務器接收新的更改。與 RDA 相比,使用合并復制卻有許多優點,如提供了內置和自定義的沖突解決功能,通過復制可以同時對多個表中的數據進行同步等。但合并復制需要在服務器上進行更多的配置和維護。

        遠程數據訪問 (RDA) 使移動應用程序能夠訪問遠程 SQL Server 2000 數據庫表中的數據,并將這些數據存儲在本地 SQL Server CE 2.0 數據庫表中。隨后,該應用程序就可以讀取和更新本地 SQL Server CE 2.0 數據庫表。SQL Server CE 2.0可以選擇跟蹤對本地表所做的所有更改。之后,應用程序可以將本地表中更改過的記錄更新回 SQL Server 表。在遠程數據訪問過程中,將數據從 SQL Server 表傳播至本地 SQL Server CE 表的過程稱為Pull --“拉”數據。將本地 SQL Server CE 表中所做的更改傳播回 SQL Server 表的過程稱為Push --“推”數據。此外還有SubmitSQL方法可直接向SQL Server 2000數據庫提交一個無返回行的命令執行。在不需要使用SQL Server CE 2.0合并復制的全部功能(包括沖突解決)時,適合使用 RDA方式。[3]

        本文采用的解決方案中,服務器端運行SQL Server 2000并采用配置IIS構建應用服務器,移動端采用PDA并配置SQL Server CE 2.0。移動端通過IIS代理訪問服務器端。對表單的同步處理采用RDA方式完成。圖1示意了RDA的方式下的數據同步[4]。

        RDA功能實現主要由三部分組成:SQL Server CE數據庫引擎、SQL Server CE客戶端代理和SQL Server CE服務器端代理。用戶直接通過SQL Server CE客戶端代理即可操作數據庫。SQL Server CE客戶端代理是RDA在移動設備上的主要組件,它實現了RDA的主要功能,可以通過程序調用它提供的接口以控制RDA;SQL Server CE服務器端代理位于服務器端,它與SQL Server CE客戶端代理通過HTTP協議進行通信,接收并處理SQL Server CE客戶端代理的命令。

        以下代碼示例如何通過RDA的Pull方法在移動設備上建立“Localtable”表,并下載SQL Server 2000中相應表的數據。使用RDA時需要創建SqlCeRemoteDataAccess對象。

        Private _strRemoteConnect As String

        _strRemoteConnect = provider=sqloledb;data source= MySqlServer;

        _strRemoteConnect =Initial Catalog=Test; User Id=sa;Password=sa;

        Private _strLocalConnect As String

        _strLocalConnect =Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;

        _strLocalConnect= Data Source=My DocumentsSampleDB.sdf;

        Const _strInternetURL As String = http:// 10.1.11.25/ssce20/sscesa20.dll

        '下載表單過程DownloadTables(ByVal Localtable As String)

        Public Sub DownloadTables(ByVal Localtable As String)

        Try

        Dim rda As SqlCeRemoteDataAccess= New SqlCeRemoteDataAccess()

        Dim _strSelectTablerToD As String

        _strSelectTablerToD =SELECT * FROM + Localtable

        rda.InternetLogin = user name

        rda.InternetPassword = password

        rda.InternetUrl = _strInternetURL

        rda.LocalConnectionString = _strLocalConnect

        rda.Pull(Localtable, _strSelectTablerToD, _strRemoteConnect, _

        System.Data.SqlServerCe.RdaTrackOption.TrackingOnWithIndexes)

        '只有設置了數據跟蹤選項TrackingOnWithIndexes以后才可以將SQL Server CE

        '中的數據“推”回到SQL Server 2000中。

        Catch ex As SqlCeException

        ……

        End Try

        End Sub

        這里指定兩個重要的參數:①SQL Server CE服務器端代理的訪問地址, SqlCeRemoteDataAccess.InternetUrl;②連接SQL Server CE數據庫的連接字符串:SqlCeRemoteDataAccess.LocalConnectionString;使用了連接SQL Server2000數據庫的連接字符串_strRemoteConnect和選擇相應表的SQL語句_strSelectTablerToD。

        檢查完畢后,表單上傳采用RDA的Push方法, 用法于PULL基本相同,使用SqlCeRemoteDataAccess類的Push方法,示例如下:

        rda.Push(Localtable , _strRemoteConnect, _

        System.Data.SqlServerCe.RdaBatchOption.BatchingOn)

        在設計SQL Server CE與SQL Server之間數據同步方案時應結合自己的數據同步業務邏輯靈活選擇運用RDA或合并復制,也可自行設計數據傳輸和辨認規則。本文所述方案只要求對物料清單的同步處理,邏輯規則簡單,所以采用RDA方式即可便捷實現。

        5結論
        本文介紹了微軟.NET Compact Framework架構下,采用ADO.NET開發移動設備SQL Server CE數據庫應用的新方法。結合倉庫物料移動巡查系統的設計方案了嵌入式SQL Server CE 2.0和SQL2000的數據同步問題。SQL Server CE是目前市場上較為成熟的嵌入式產品,應用領域正逐步擴大,而采用.NET技術開發其相關應用將是今后的主流。

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延吉市| 景洪市| 隆林| 松原市| 通辽市| 黑龙江省| 巴塘县| 芜湖县| 新干县| 禄劝| 交城县| 郴州市| 靖西县| 洪江市| 荥阳市| 秦安县| 云南省| 达州市| 方城县| 临桂县| 东莞市| 高安市| 买车| 渝北区| 万年县| 鹿泉市| 泾川县| 瑞安市| 道真| 子洲县| 鱼台县| 观塘区| 枝江市| 梁山县| 南雄市| 高陵县| 永年县| 辽中县| 陈巴尔虎旗| 芦山县| 新野县|