开发使用ADOCE的Windows CE数据访问应用程序.doc_第1页
开发使用ADOCE的Windows CE数据访问应用程序.doc_第2页
开发使用ADOCE的Windows CE数据访问应用程序.doc_第3页
开发使用ADOCE的Windows CE数据访问应用程序.doc_第4页
开发使用ADOCE的Windows CE数据访问应用程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开发使用ADOCE的Windows CE数据访问应用程序Microsoft Corporation1999 年 6 月摘要:介绍 Microsoft(R) ActiveX(R) Data Objects (ADO) 和 ActiveX Data Objects for Microsoft Windows(R) CE (ADOCE),并介绍如何使用 ADOCE。同时讨论 Recordset 和 Field 对象,其中包括:介绍介绍 ADO 和 ADOCE Recordset 和 Field 对象使用 ADOCE摘要详细信息介绍通过 Microsoft ActiveX Data Objects (ADO),客户机应用程序能够通过 OLE 数据库提供程序访问并处理数据库服务器中的数据。ActiveX Data Objects for Microsoft Windows CE (ADOCE) 提供了 ADO for Windows CE 的一个子集。 ADOCE 能够启动对存储于本地设备中的数据库的访问功能,并为网络数据库中的数据提供同步功能,从而在 Windows CE 操作系统中增加了新的数据库功能。ADOCE 能够与 Handheld PC (H/PC) 和 Palm-size PC 1.2 版一同使用。这篇文章介绍了 ADO 和 ADOCE,对 Recordset 和 Field 对象进行了说明,并讨论了 ADOCE 的应用方式。介绍 ADO 和 ADOCEADO 是 Microsoft 为所有数据类型提供的战略性高级接口。采用 ADO 的应用程序可以通过 OLE 数据库提供程序访问并处理数据库服务器中的数据。ADO 的主要优点是:使用简单、速度高、内存占用少、磁盘占地面积少。ADO 提供了一致的、高性能的数据访问方式,可以使用应用程序、工具、语言甚至是 Internet 浏览器创建前端数据库客户机程序或中层业务对象。ADO 是 Microsoft Universal Data Access 策略的中心组件。Universal Data Access 为包括关系型和非关系型数据库在内的各种信息资源提供了高性能的访问方式,以及一个独立于工具和语言的、易于使用的编程接口。得益于这些技术,公司能够集成不同的数据资源、创建易于维护的解决方案并自由选择最好的工具、应用程序和平台服务。ADOCE 提供了 ADO for Windows CE 操作系统的一个子集,其中包括 Recordset 和 Field 对象的实施过程。ADOCE 能够启动对存储于本地设备中的数据库的访问功能,并为网络数据库中的数据提供同步功能,从而在 Windows CE 操作系统中增加了新的数据库功能。ADOCE 可以由 Microsoft Windows CE Toolkit for Microsoft Visual Basic(R) 6.0 版等任一实现了 COM 的环境中访问 Windows CE 数据库引擎。ADOCE 提供了下述功能: 自动实现对台式主机的双向同步。 新的数据类型:双精度型和布尔型(与 Windows CE 数据库相比较)。 对 SQL 的支持。ADOCE 中的高级 SQL 支持功能是“美国国家标准委员会 (ANSI)”的 SQL 的一个子集。它所新增的数据库引擎功能可以提供字段名、多个排序关键字、较为复杂的筛选功能、表和索引的创建功能、删除和编辑功能以及多个表的联接功能。 熟悉的 recordset.fieldname 访问方式。 桌面 ADO 功能。 Recordset 和 Field 对象ADOCE 控件有两个对象:Recordset(记录集)和 Field(字段)。记录集是一个虚拟的数据库表,它的字段和行与实际数据库表字段和行的子集相对应,而这些实际数据库表位于基于 Windows CE 的设备中。如果您对记录集行中的信息进行添加、删除或更改操作,您可以将这些改动的情况传递给表中相应的部分。当您改动记录集中的数据时,记录集将改动情况存储在内存中,您还可以在更新基础数据前取消这些操作。ADOCE 不支持分批更新。每次已完成数据更改,但又没有提交到基础数据库的行只能有一个。下面的表格显示了 Recordset 对象能够支持的方法。方法说明AddNew在记录集中添加一行。CancelUpdate取消内存中保留的更改。Clone复制记录集。Close关闭记录集。Delete删除记录集中的行。GetRows返回记录集中存储的数据。Move 更改指向记录集当前行的指针。MoveFirst使第一行成为当前行。MoveLast使最后一行成为当前行。MoveNext将当前行指针指到下一行。MovePrevious将当前行指针指到上一行。Open定义并打开记录集;运行 SQL 命令。Supports定义记录集是否支持某一特征。Update提交内存中的更改,并更新实际表。下一表格显示 Recordset 对象所支持的属性。属性说明AbsolutePage指定新的当前记录所要移动的页。AbsolutePosition指定 Recordset 对象当前记录的序号位置。ActiveConnection设置当前的数据库连接。通常是一个长度为零的字符串 ()。对于运行 Pro Edition 软件的 H/PC,则指的是 cdb 文件的名称。BOF指明当前记录的位置是否位于 Recordset 对象第一个记录的前面。Bookmark指定唯一标识 Recordset 对象的记录的书签。CacheSize指定在本地内存中进行缓存的 Recordset 对象的记录数量。CursorType指明 Recordset 对象中所使用的光标的类型。EditMode指明当前记录的编辑状态。EOF指明当前记录的位置是位于 Recordset 对象最后一个记录的后面。LockType指明编辑过程中置于记录中的锁定类型。PageCount指明 Recordset 对象中包含有多少页数据。PageSize指明构成记录集的一页的记录有多少条。RecordCount返回一个较长的数值,显示 Recordset 对象中记录的当前数量。Source指明 Recordset 对象中数据的源,即 SQL 语句或表名。不能直接创建 Field 对象,因为它们只存在于现有记录集的上下文中。用 Set 函数指向特定的 Field 对象。Field 对象没有方法或事件。除了 Value 属性外,所有的属性都是只读的。下面的表格显示了 Field 对象能够支持的属性。属性说明ActualSize指明一个字段数值的实际长度,以字节为单位。Attributes返回指明 Field 对象的一个或多个特性的数值。DefinedSize用于确定 Field 对象的数据容量。他将以字符为单位,返回字段定义的大小,而 ActualSize 将以字节为单位,返回定义的大小。Name返回字段的名称。Type指明 Field 对象的数据类型。UnderlyingValue指明数据库中 Field 对象的当前数值。Value(默认)指明记录集中 Field 对象的当前数值。Fields 集合针对记录集中的每一列提供一个 Field 对象。可以通过名称或索引参考特定字段。Fields 集合支持 Count 属性,该属性指明记录集中字段的编号。使用 ADOCE通过 ADOCE,数据库即可自由出入基于 Windows CE 的设备。您也可以在设备上或桌面计算机的模拟器上创建数据库或进行访问。以下各节说明了 ADOCE 的使用方式,并列举了一些示例。注意 ControlConsts.bas 安装于 Program FilesMicrosoft Visual StudioVB98VBCESamples。这一文件包含 ADOCE 和其他控件的枚举方式的定义。所需软件要使用 ADOCE 控件,需要安装下述软件: Microsoft Windows CE Services 2.1 版或更新版本 Microsoft Windows NT(R) Workstation 4.0 版或 Windows 95 或 98 为正在使用的设备提供的 Microsoft Windows CE Platform SDK Microsoft Visual Basic, Professional Edition 6.0 版,开发系统或 Microsoft Visual Basic, Enterprise Edition 6.0 版 Microsoft Windows CE Toolkit for Visual Basic 6.0 版 注意Windows CE Toolkit for Visual Basic 中包含 ADOCE 控件。在桌面计算机和设备之间移动数据库您可以在桌面计算机和基于 Windows CE 设备之间移动数据库表。存储在桌面计算机中的数据库是 Microsoft Access(R) 数据库格式。存储在设备中的数据库是标准的基于 Windows CE 表的格式,其中带有已添加到 ADOCE 系统表的附加信息。如果要将桌面计算机的数据库复制到设备 1. 将设备与桌面计算机相连接,并打开“移动设备”窗口。2. 选择“移动设备”窗口“工具”菜单的“导入数据库表”命令。将出现“打开”对话框。3. 选择包含要导入的表的 Access .mdb 文件。将出现“从数据库导入到移动设备”对话框,其中带有数据库中表和字段的列表。4. 选中要导入的表和字段的复选框,清除不希望导入的表和字段的复选框。5. 对于要添加只读属性的表,请选中“只读”复选框。6. 如果希望覆盖设备中与 .mdb 文件中的表同名的表,请选择“覆盖已有的表和 (或) 数据”复选框。7. 选择“确定”开始进行转换。 如果要将设备的数据库复制到桌面计算机 1. 将设备与桌面计算机相连接,并打开“移动设备”窗口。2. 选择“移动设备”窗口“工具”菜单的“导出数据库表”命令。将出现“从移动设备导出到数据库”对话框,显示相连接设备的 ADOCE 表。3. 选择“浏览”按钮,以便选取 Access .mdb 文件。您也可以在“位置”框中键入路径和文件名。如果文件不存在,ADOCE 会为您创建。4. 选中要导出的表的复选框,清除不希望导出的表的复选框。ADOCE 会将选中的所有表置于同一 .mdb 文件中。5. 如果希望覆盖 .mdb 中与所选 ADOCE 表同名的表,请选择“覆盖已有的表和(或)数据”复选框。6. 选择“确定”开始进行转换。 如果要在由 .mdb 文件转换成 ADOCE 表以及由 ADOCE 表转换到 .mdb 文件的过程中使用可编程控件,您可以分别使用 DesktopToDevice 和 DeviceToDesktop 函数。这些函数的行为方式与“从数据库导入到移动设备”和“从移动设备导出到数据库”类似,只是不会出现用户选项对话框。所有的进度栏都会出现,以便显示传输状态。返回的错误不会导致自动显示日志文件。而是由函数返回错误值 HRESULT,并且由发出调用命令的应用程序采取适宜的措施。通过 DesktopToDevice 函数,您就可以指定要转换的字段。不过,通过 DeviceToDesktop 函数,默认情况下将转换表中的所有字段。以下代码示例显示一个简单的 Visual Basic 应用程序,它将 Visual Basic 中的 Northwind 数据库的一个子集复制到设备,没有进行同步,但覆盖了所有现存的 Northwind 表。Employees 表将作为只读表发送,而 Products 表能够进行更新。Declare Function DesktopToDevice Lib c:program fileswindows ce servicesadofiltr.dll _(ByVal desktoplocn As String, _ ByVal tablelist As String, _ ByVal sync As Boolean, _ ByVal overwrite As Integer, _ByVal devicelocn As String) As Longresult = DesktopToDevice (c:mydbsnwind.mdb, _!Employees.Products.ID.Name.Quantity., False, True, )If result 0 Then MsgBox An error occurred transferring the data创建表您必须建立一个存储用的表,然后才能用 ADOCE 控件访问数据。以下代码示例说明如何在运行 Pro Edition(专业版)软件的 H/PC 的 Databases 目录中创建新的 ADOCE 表。Dim rsSet rs = CreateObject(adoce.recordset)rs.Open create table mytable (firstfield text, secondfield integer)Set rs = Nothing因为更改表结构的 SQL 语句已将记录集关闭,除非再次打开记录集,否则您无法读写数据。对表进行排序您可以用带有索引或不带索引的 Order By 语句对数据库进行排序。然而,如果在不带索引的情况下对数据库进行排序,通常要比带索引的情况下慢。以下代码示例显示如何在不带索引的情况下对数据库进行排序。它需要一个名为 List1 的列表框。Dim rsSet rs = CreateObject(ADOCE.RecordSet)rs.open select * from mytable order by firstfield desc, , adOpenKeyset, adLockOptimisticIf rs.RecordCount 0 Then Do While Not rs.EOF List1.Additem rs.Fields(firstfield).Value rs.MoveNext LoopEnd Ifrs.Closeset rs = Nothing以下代码示例显示如何在数据库中创建索引,以便进行快速排序。它需要一个名为 List1 的列表框。Dim rsSet rs = CreateObject(ADOCE.RecordSet)rs.open create index i1 on mytable (firstfield desc)rs.open select * from mytable order by firstfield desc, , adOpenKeyset, adLockOptimistic If rs.RecordCount 0 Then Do While Not rs.EOF List1.Additem rs.Fields(firstfield).Value rs.MoveNext LoopEnd Ifrs.Closeset rs = Nothing存储并检索信息如果要在数据库中添加、删除或更改信息,打开记录集时必须更改默认的 CursorType 和 LockType。以下代码示例显示如何在数据库中存储信息:Dim rsSet rs = CreateObject(ADOCE.RecordSet)rs.open mytable, , adOpenKeyset, adLockOptimisticrs. Addnewrs.fields(firstfield) = ActiveX Data Objectsrs.fields(secondfield) = 1.8rs.Updaters.CloseSet rs = Nothing如果您使用带参数的 AddNew 方法,则因为改动情况将自动反映到数据库,所以不需要使用 Update 方法。以下代码示例说明如何使用 AddNew:rs.Addnew firstfield, Windows CE如果要更改记录,而不是添加记录,则应在对字段进行必要的改动后使用 Update 方法。如果您使用带参数的 Update,则改动情况将自动反映到数据库。以下代码示例说明如何使用 Update:rs.Update firstfield, ADOCE在您使用 AddNew 和 Update 在数据库中存储数据后,可以用 Value 属性获取存储于字段中的信息。以下代码示例说明如何由 ADOCE 数据库检索信息。它需要一个名为 List1 的列表框。Dim rsSet rs = CreateObject(ADOCE.RecordSet)rs.open mytable, , adOpenKeyset, adLockOptimistic If rs.RecordCount 0 Then Do While Not rs.EOF List1.Additem rs.Fields(firstfield).Value rs.MoveNext LoopEnd Ifrs.Closeset rs = Nothing分发 ADOCE 应用程序必须在桌面计算机和设备中都安装 ADOCE 应用程序的组件。分发 ADOCE 应用程序的一个途径是更改 Microsoft Windows CE Toolkit for Visual Basic 6.0 中自带的示例安装程序。所有 ADOCE 安装应用程序都应该确认是否安装了 Windows CE Services 2.1 或更新版本,并且在 ADOCE .cab 文件中添加了对应用程序的 AppMgr .ini 文件的引用。使用运行了 Pro Edition(专业版)软件的 H/PC本节说明了能够在运行 Mi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论