从 Pocket Access 向 SQL Server CE 进行数据库迁移(转)

适用于:
.NETCompact Framework version 1.0
Visual Studio.NET2003
eMbedded Visual Basic
ActiveX Data Objects for Windows CE (ADOCE)
MicrosoftSQLServer CE
Windows Mobile software for Pocket PCs

摘要:本文讨论有关将用 eMbedded Visual Basic 编写的 Pocket PC 应用程序迁移到 .NET Compact Framework 的问题。迁移包括从使用 ADO CE 访问 Pocket Access 数据库中的数据更改为使用 ADO.NET 访问 SQL Server CE 中的数据。

简介

无论您是已经决定将应用程序和数据从以前的 Pocket PC 工具(Microsoft eMbedded Visual Basic 和 Pocket Access)迁移到目前的技术(Microsoft .NET Compact Framework 和 Microsoft SQL Server CE),还是正在考虑这一决定,您都需要研究这一迁移的一些困难的理由。

第一个理由是您的设备将提高性能。在设备处理器(即使是最新的最优秀的处理器)上,性能无疑非常重要。在 SQL Server CE 中正确地设置数据库(通过适当的密钥、索引等)以后,它的性能将完全超过 Pocket Access — 有时可以超过好多倍。

第二个理由是 SQL Server CE 中更为丰富的类型系统将使您的设备能够更有效地存储数据。您可以存储在 Pocket Access 中的所有内容都可以存储在 SQL Server CE 中(不止如此)。因为该类型系统是 SQL Server 2000 的类型系统的干净子集,所以同步也会更加容易。

第三个理由是当前的数据访问中间件 (ADO.NET) 将为您提供更多的功能,以使您除了操作数据的定义以外,还可以读取和操作数据本身。新增的且本来断开的模型(由 DataSet 表明)使您在数据的使用方式方面具有更多的自由。可以将 DataSet 发送到 XML Web 服务(当您通过 ASP.NET 创建 XML Web 服务时,DataSet 类型将受到天然支持)。您可以将 DataSet 作为 XML(包含 XML 架构信息,或者在单独的文件中)存储到文件系统中(可以将 XML 从相同的文件重新读取到 DataSet 中)。

最后一个理由是,除了数据操作以外,更加丰富的 SQL 语法还使您在读取数据时具有更多的选择(使用子查询、外部联接等)。以前,您需要在检索 Recordset 之后的代码中实现大量逻辑,而现在您可以直接在它所属的 SQL 命令中完成该工作。在以前的代码中,完成诸如通过 LTRIMCASE...WHEN...THEN...ELSE...END 语句格式化 SELECT 语句中的列的工作要困难得多,并且通常会更慢。

当从以前的 Pocket PC 应用程序进行的迁移同时涉及到数据和代码的迁移时,您可以在下列三个不同的级别执行迁移:

数据库

数据库中间件

源代码

在数据库级别,可以将数据和代码从 Pocket Access 迁移到 SQL Server CE。主要差异与受支持的数据类型有关。当您迁移数据访问代码时,数据库中间件中的差异主要与受支持的对象以及使用这些对象的语法有关。通常,当您迁移源代码时,差异同时与不同的语言以及受支持的类库有关。下列各部分将描述不同级别之间的差异。

从 Pocket Access 迁移到 SQL Server CE

通常,以前的 Pocket PC 应用程序中的数据源自桌面计算机的 Microsoft Access 数据库。当需要进行桌面计算机复制时,通常会借助于 Microsoft ActiveSync 中内置的同步功能在桌面计算机和设备之间复制这些数据。当数据迁移到 SQL Server CE 时,第一步是将现有的 Access 数据库迁移到 SQL Server 2000。

您可以从 Access 内部执行该迁移,方法是通过连接到 SQL Server 2000 数据库的开放式数据库连接 (ODBC) 数据源来导出表。然后,您可以通过使用远程数据访问 (RDA) 将 SQL Server 2000 中的数据复制到设备上的 SQL Server CE。有关如何完成该复制的详细信息,请参阅本文中的“同步”一节。

表 1 显示了每个数据库支持的不同数据类型的映射。

表 1. 数据类型映射
Access 数据类型Pocket Access 类型SQL Server 2000 类型SQL Server CE 类型

Text

varchar

nvarchar

nvarchar

Memo

text

ntext

ntext

LongInt

integer

int

int

Int, Byte

smallint

smallint

smallint

Double, Single

double

float

float

Replication ID

varbinary

uniqueidentifier

uniqueidentifier

Date/Time

datetime

datetime

datetime

Currency

double

money

money

AutoNumber

integer

int

int

YesNo

boolean

bit

bit

OleObject

varbinary

image

image

HyperLink

text

ntext

ntext

Lookup

varchar

nvarchar

nvarchar

SQL Server 2000 支持所有 Access 数据类型,并且因为 SQL Server CE 支持(不用转换)导出中生成的所有类型,所以迁移过程中不会丢失任何信息。

从 ADO CE 迁移到 ADO.NET

ActiveX Data Objects for Windows CE (ADO CE) 是作为 ADO 的设备版本创建的,并且第一个版本 (3.0) 只支持 Pocket Access。在创建 SQL Server CE 时,更新了 ADO CE 以支持它。尽管很多以前的 Pocket PC 应用程序使用 ADO CE(3.0) 的第一个版本来访问 Pocket Access 数据库,但本节中的信息只与最新版本 (3.1) 有关。不过,下列代码示例也应该适用于 ADO CE .0。

ADO CE 支持下列对象:Recordset、Field(和集合)、Connection 和 Error(和集合)。但是,ADO CE 不支持完整(桌面)ADO 实现中包含的 Command 对象。作为 ADO CE 的扩展,ADO XCE 包含管理数据库的功能,如操作表、字段和其他数据库对象。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126737/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126737/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值