<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式移動數(shù)據(jù)庫SQL Server for Windows CE的應(yīng)用研究

          嵌入式移動數(shù)據(jù)庫SQL Server for Windows CE的應(yīng)用研究

          作者: 時(shí)間:2009-03-04 來源:網(wǎng)絡(luò) 收藏

          1 引言
          系統(tǒng)或簡稱為(EMDBS),是專門運(yùn)行在各種智能型嵌入設(shè)備或設(shè)備上的小型系統(tǒng)。目前已經(jīng)成為一個(gè)十分活躍的領(lǐng)域。

          本文引用地址:http://www.ex-cimer.com/article/152622.htm

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

          本文介紹如何采用基于.NET Compact Framework的ADO.NET技術(shù)開發(fā)移動設(shè)備的數(shù)據(jù)庫,并將 數(shù)據(jù)庫于倉庫物料移動巡查系統(tǒng)的設(shè)計(jì)方案。

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

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

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

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

          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目錄下創(chuàng)建空的名為SampleDB的數(shù)據(jù)庫。這里還介紹關(guān)于一個(gè)比較常用的類――SqlCeCommand,可用來表示對數(shù)據(jù)源執(zhí)行的 SQL 語句。當(dāng)需要向已創(chuàng)建的數(shù)據(jù)庫SampleDB添加一個(gè)名為Bicycle的庫存表,并定義它的相關(guān)字段時(shí)可用以下代碼實(shí)現(xiàn),其中cn定義了數(shù)據(jù)源的連接,使用了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()

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

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

          因?yàn)樾枰螺d物料清單到PDA上,并在PDA上臨時(shí)保存物料清單,所以在PDA上需要有一個(gè)數(shù)據(jù)庫系統(tǒng)。選擇的系統(tǒng)即為SQL Server CE 2.0。同時(shí),系統(tǒng)需要考慮手持PDA上SQL Server CE 2.0與數(shù)據(jù)中心SQL Server 2000進(jìn)行雙向的數(shù)據(jù)同步問題。

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

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

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

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

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

          以下代碼示例如何通過RDA的Pull方法在移動設(shè)備上建立“Localtable”表,并下載SQL Server 2000中相應(yīng)表的數(shù)據(jù)。使用RDA時(shí)需要創(chuàng)建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)

          '只有設(shè)置了數(shù)據(jù)跟蹤選項(xiàng)TrackingOnWithIndexes以后才可以將SQL Server CE

          '中的數(shù)據(jù)“推”回到SQL Server 2000中。

          Catch ex As SqlCeException

          ……

          End Try

          End Sub

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

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

          rda.Push(Localtable , _strRemoteConnect, _

          System.Data.SqlServerCe.RdaBatchOption.BatchingOn)

          在設(shè)計(jì)SQL Server CE與SQL Server之間數(shù)據(jù)同步方案時(shí)應(yīng)結(jié)合自己的數(shù)據(jù)同步業(yè)務(wù)邏輯靈活選擇運(yùn)用RDA或合并復(fù)制,也可自行設(shè)計(jì)數(shù)據(jù)傳輸和辨認(rèn)規(guī)則。本文所述方案只要求對物料清單的同步處理,邏輯規(guī)則簡單,所以采用RDA方式即可便捷實(shí)現(xiàn)。

          5結(jié)論
          本文介紹了微軟.NET Compact Framework架構(gòu)下,采用ADO.NET開發(fā)移動設(shè)備SQL Server CE數(shù)據(jù)庫應(yīng)用的新方法。結(jié)合倉庫物料移動巡查系統(tǒng)的設(shè)計(jì)方案了嵌入式SQL Server CE 2.0和SQL2000的數(shù)據(jù)同步問題。SQL Server CE是目前市場上較為成熟的嵌入式產(chǎn)品,應(yīng)用領(lǐng)域正逐步擴(kuò)大,而采用.NET技術(shù)開發(fā)其相關(guān)應(yīng)用將是今后的主流。

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


          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();