当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式移动数据库SQL Server for Windows CE的应用研究

1 引言
嵌入式移动数据库系统或简称为移动数据库(EMDBS),是专门运行在各种智能型嵌入设备或移动设备上的小型数据库系统。目前已经成为一个十分活跃的研究和应用领域。

Microsoft SQL Server 2000 Windows CE Edition 2.0版简称SQL Server CE 2.0,`是用作快速开发的关系型精简数据库[1],它将企业数据管理能力扩展到了基于Windows CE操作系统的嵌入式移动设备上。SQL Server CE提供远程数据访问和合并复制功能,确保了移动设备SQL Server CE数据库中的数据能够可靠地传输、能够离线操作并在晚些时候与SQL Server服务器同步,这些使得SQL Server CE成为移动和无线环境下理想的数据库。

本文介绍如何采用基于.NET Compact Framework的ADO.NET技术开发嵌入式移动设备的数据库应用,并将SQL Server CE 数据库应用于仓库物料移动巡查系统的设计方案。

2  .NET 下开发SQL Server CE的方法
在基于Windows CE的嵌入式移动设备上开发SQL Server CE数据库应用可以使用的工具有EVB,EVC和 Visual Studio .NET(vs2003.net或vs2005.net)。使用EVB或EVC时,通过ADOCE或OLE DB for 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技术开发其相关应用将是今后的主流。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括了家居,商业,工业,农业等领域,不仅吸引...

关键字: 嵌入式 物联网 技术

随着IT技术飞速发展,互联网已经进入了“物联网”时代。物联网中需要的大量设备不在依赖人与人之间的交互产生联系,更多通过协议、通信、程序设计等方式连接到一处。即 “物联网”的目的则是让所有的物品都具有计算机的智能但并不以通...

关键字: 嵌入式 物联网 计算机

近日,一个存在于Windows Mark of the Web (MotW)中的零日漏洞被发现,并正在被攻击者积极利用。但有趣的是,在微软官方还没有对该漏洞做出修复之前,第三方平台0patch就提供了该漏洞的修复补丁。据...

关键字: PATCH Windows 微软 APP

欧洲药品管理局人用药品管理委员会 (CHMP) 的积极建议是基于 EFFISAYIL® 1 研究结果,该研究是针对泛发性脓疱型银屑病 (GPP) 发作患者的最大的临床研究[1] 与斑块状银屑病不同,GP...

关键字: HM BSP GP FOR

最近看到APP上,给我推送了很多类似的回答,借此机会,也想着重新审视一下自己的学习历程,以及结合自身和大牛,分享一些学习经验,希望对大家有所启发和帮助。

关键字: APP 嵌入式 C语言

(全球TMT2022年10月14日讯)以“自由构建 探索无限”为主题的亚马逊云科技中国峰会在线上召开。在本次为期2天的峰会上,亚马逊云科技发布了云计算技术趋势展望,宣布“连中外、襄百业、携伙伴、促绿色”四大战略举措,进...

关键字: FOR 亚马逊 SAP NVIDIA

万物智联时代,嵌入式技术及其应用的形态将更加丰富和多元,同时也将日益呈现深度物理融合、混合架构共存、群体智能协同、网络安全攸关等诸多新的计算特性。显然,经典的嵌入式系统体系结构、软硬件技术和开发方法都已很难应对新趋势下的...

关键字: 嵌入式 物联网 计算机

物联网是新一代信息技术的重要组成部分,是互联网与嵌入式系统发展到高级阶段的融合。通用计算机经历了从智慧平台到互联网的独立发展道路;嵌入式系统则经历了智慧物联到局域智慧物联的独立发展道路。

关键字: 嵌入式 物联网 计算机

《财富》杂志(Fortune)公布了2022年财富改变世界(Fortune Change the World)榜单,其中列出了50多家公司,这些公司今年通过盈利战略和运营对社会或环境产生了重要影响。榜单包括54家公司:北...

关键字: 美团 FOR CHANGE DEVELOPMENT

今天,小编将在这篇文章中为大家带来工控主板的有关报道,通过阅读这篇文章,大家可以对工控主板具备清晰的认识,主要内容如下。

关键字: 工控主板 嵌入式 主板

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭