关于Windows CE下的开发(求救,急!!急!!)(100分)

J

joehut

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,那位开发过Windows CE下的数据库?
开发平台?如何做?我一点也没入门!!!
 
使用 ADO 开发 Windows CE 数据库程序


--------------------------------------------------------------------------------

作者:developer


简介

ADO (ActiveX Data Objects,ActiveX 数据对象) 是微软公司的通用数据访问( UDA,
Universal Data Access )策略的中心组件。它提供了简单易用的访问各种信息资源,包括
关系型和非关系型数据库,的高效手段。ADO 与 OLEDB 和 ODBC 一起,是在微软公司的开
发环境中进行数据库编程的最佳选择。经过从诞生到现在的发展,ADO 已经成为一个可靠、
高效的数据访问方法。实际上,它也是微软公司推荐的用于访问所有数据的方法。ADO 被应
用于很多场合,例如用于在网页中连接运行在 IIS 服务器上的数据库,用于 VB 应用程序
与 SQL 服务器的连接,当然也可以用于为 CE 装置开发数据库应用程序。用于开发 CE 数
据库应用程序的 ADO 称之为 ADOCE。

但是,使用 ADOCE 进行 CE 下的数据库程序开发并不是件很容易的事。

ADOCE 详解

关于 ADOCE ,你必须首先了解它是 ADO 的一个子集。换句话说,其中只有 Recordset
和 Field 对象的实现,没有命令对象(Command object)、没有连接、错误和属性。但是它仍
能提供与桌面的自动双向同步、ANSI SQL 的支持,以及标准的 ADO 的功能。

与桌面数据库进行同步

ADOCE 允许在 CE 装置和桌面电脑的数据库之间进行双向的直接同步。这实现起来很简
单,只要在桌面电脑上有 Access 数据库 (.mdb),在 CE 装置上有 Pocket Access 数据库
(.cdb) 。然后使用 ActiveSync 3.0 来制定 Access 数据库中需要和 CE 装置进行同步的数
据表,并设置同步周期。举个例子,假设在你的桌面电脑上有一个叫做 Contacts.mdb 的数据
库,其中有一个表叫做 Business。可以按以下步骤将这个数据库传送到 CE 装置上:

1,确认 CE 装置和你的桌面电脑已经连接,并打开了 ActiveSync;
2,从 Tools 菜单中选择要导入的数据表;
3,落千丈选择你要导入 CE 装置的 Access 数据表(在本例中是 Contacts.mdb),然后点
击打开它; 这时将显示一个标题为 "Import from Database to Mobile Device" 的对话框。在
该对话框中你可以看到刚才选中的数据表显示在一个未展开的树视图中。你可以通过选择与数据
表和字段(fields)对应的多选框(check boxes)来选定要导入的项目; 如果你想保持 CE 装置上
的数据表与桌面 Access 数据库相同步,可以选择 'Keep tables synchronized' 这个多选框;
点击 OK 按钮完成。

现在在 CE 装置上有了一个 .cdb 文件,你可以编写一个应用程序来使用它,而且每当 CE
装置与桌面电脑同步时,该文件中的数据也会与之同步。

ADOCE 代码示例

完成上述步骤之后,我们可以编写一些代码。在本例中,所有的示例代码都是用 Visual
Basic 6.0 写的(如果你使用的是 Visual C++ 6.0,而且以前也用过 ADO 进行编程,那么转换
也是很容易的)。

注意:为了在 VB6 中使用 ADOCE,你必须在工程设置中 (Project References) 中选定
Microsoft CE ADO 控件(ADOCE) 2.0,而不是组件(Components)。如果你要使用 .cdb 文件,
首先必须打开记录集(Recordset):


Dim rs as Recordset
Set rs = CreateObject("ADOCE.Recordset")
rs.Open "Buisness", "Contacts.cdb", adOpenKeyset, adLockOptimistic


正如你所见的,这很像标准的 ADO Recordset.Open 函数。除了一点点改变,确实是这样
的。因为我们是在 VB 中给出这个例子,而且使用的是 CE 上的 VB 运行库(关于 VB 运行库,
详见本站翻译的另一篇文章 《使用 Visual Basic 进行 Windows CE 开发 》),因此不需要明确
的声明记录集,而是选择 CreateObject 这个对使用 VBScript 的 Web 开发者来说很熟悉的函数。
Recordset.Open 使用的参数和 ADO 的常用参数是一样的(Recordset.Open Source, ActiveConnection,
CursorType, LockType, Options),但使用的是一个连接对象(Connection object),指向我们要用到的
.cdb 文件。

另外一个办法是,如果你不打算使用一个已经存在的数据库,而是想创建一个存放在 CE 操
作系统中的虚拟记录集,只需象下面这样将 ActiveConnection 参数用双引号括起来就可以了:


'创建数据表
Dim rs as Recordset
Set rs = CreateObject("ADOCE.Recordset")
rs.Open "create table Business (fname text, lname text, company_text, address
text, phone integer)"
Set rs = Nothing

'打开数据表
Set rs = CreateObject("ADOCE.Recordset")
rs.Open "Buisness", "", adOpenKeyset, adLockOptimistic
现在你已经得到了一个记录集,对它的读写操作都是标准的 ADO 操作:


Dim rs as Recordset
Set rs = CreateObject("ADOCE.Recordset")
rs.Open "Business", "Contacts.cdb", adOpenKeyset, adLockOptimistic

'读记录集
txtFName.Text = rs.Fields("fname").Value
txtLName.Text = rs.Fields("lname").Value
txtCompany.Text = rs.Fields("company").Value
txtAddress.Text = rs.Fields("address").Value
txtPhone.Text = rs.Fields("phone").Value

'添加新记录
rs.AddNew
rs.Fields("fname").Value = "Robert"
rs.Fields("lname").Value = "Smith"
rs.Fields("company").Value = "The Cure"
rs.Fields("address").Value = "London, England"
rs.Flelds("phone").Value = "134551212"
rs.Update
rs.Close
Set rs = Nothing

关于 ADOCE,本文就涉及这么多的内容了。

以下是关于 ADOCE 的几个需要注意的方面:

*.和桌面 ADO 一样,如果你在 AddNew 或 Update 中使用参数,所作的改变会自动地
作用到数据库中;
*.ADOCE 不支持批量更新;
*.除了 Value 属性外,所有字段(Field)对象的属性都是只读的;
*.不能使用 UPDATE SQL 语句来进行更新,而是必须使用 Recordset.Update;
*.尽量减小数据表的体积,并尽量提高它的效率。

 
顶部