当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式移动数据库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技术开发其相关应用将是今后的主流。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭