你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
基于Windows CE 5.0 EDB数据库的应用与开发
 

沈建国  田增山

                        

  文章阐述了Windows CE 5.0 EDB数据库的基本构建过程和常用的操作函数及结构体,在此基础上结合PDA通话记录数据库的开发实例,系统介绍了EDB数据库的创建思路和具体操作如读取记录、添加记录、删除和查询记录等,并且克服了EDB数据库查询功能不够灵活的特点,提出了一种新的查询方法—逐点查询法。

关键词 Windows CE5.0EDB,应用,开发实例

 

在软件编程中,数据库始终是很重要的一个部分。通过数据库,可以非常方便的存储和检索数据,极大的提高人们的工作效率。但由于智能掌上设备的资源有限,限制了对数据库的使用。在WindowsCE5.0 操作系统中,专门提供了一套自带的数据库。该数据库具有数据结构相对简单,操作灵活的特点,在存储的数据量较小的情况下如通讯薄程序等,使用wince自带的数据库是非常合适的。

EDB(Embeded Database)作为WindowsCE5.0一种增强型的数据库,相对CEDB而言,EDB的功能更强大。它支持更多类型的存储类型,支持事务处理等。该系统最多可以支持4种排序字索引和9种字段数据类型。在EDB数据库中可以通过提供消息来通知其他进程已经修改了数据库,数据库中的记录可以根据需要具有很多的属性,只要他们没有超出数据库结构的基本限制。某个单独的属性大小不能超过CEDB_MAXPROPDATASIZE(65471),单个记录的大小不能超过(128*1024)

    Wince5.0及其以上版本支持三个不同版本的API函数,但是由于EDB相对来说功能较为强大,所以函数使用也较复杂,其参数更多、结构更复杂,故本文以EDB为例,结合实际开发的实例,来讲解其常用的操作如:打开、关闭、查询、删除等。并且克服了EDB查询功能不足的特点,提出了一种新的查询方法逐点(OBO ,ONE_BY_ONE) 查询法。

一、EDB数据库的创建和基本操作

建立一个EDB数据库的基本思路是:首先加载数据库卷,然后在加载的数据库卷中建立数据库,数据库建立好后再打开数据库以便对数据库进行读写等操作。

1.加载数据库卷

建立数据库之前应该加载数据库卷,可以使用CeMountDBVol函数来实现,其函数定义如下:

BOOL CeMountDBVol( PCEGUID pceguid, LPWSTR lpszDBVol,DWORD dwFlags);

2.创建数据库

加载数据库卷后,应该创建数据库,此时可用CeCreateDatabasEx来创建数据库,定义如下:

CEOID CeCreateDatabaseEx( PCEGUID pceguid, CEDBASEINFO *lpCEDBInfo);

创建数据库成功后,应该打开数据库,此时应调用CeOpenDatabaseEx函数,定义如下:

HANDLE CeOpenDatabaseEx( PCEGUID pceguid, PCEOID poid,LPWSTR lpszName, CEPROPID propid, DWORD dwFlags,CENOTIFYREQUEST *pReq);

3.对数据库进行读,写,删除的操作

在数据库建立好后,需要对数据库进行操作。如:添加记录,删除记录,修改记录,查找记录。实现以上操作的方法并不唯一,现给出一些实用的操作方法。

打开数据库后,在向数据库写入数据的时候可以调用CeWriteRecordProps函数,其定义如下:

CEOID CeWriteRecordProps(HANDLE hDbase, CEOID oidRecord, WORD cPropID, CEPROPVAL *rgPropVal),当写入成功以后返回写入记录在数据库中的属性CEOID,否则返回为0 
在读取数据库数据时,可以调用CeReadRecordPropsEx函数来实现:
CEOID CeReadRecordPropsEx( HANDLE hDbase, DWORD dwFlags,LPWORD lpcPropID, CEPROPID *rgPropID, LPBYTE *lplpBuffer,LPDWORD lpcbBuffer, HANDLE hHeap);
需要注意的是读取记录的操作中将涉及到指针、结构体数组的操作,因此要格外小心。当需要删除数据库文件时,则调用CeDeleteRecord函数来实现
BOOL CeDeleteRecord(HANDLE hDatabase, CEOID oidRecord);
在读,写,删除的过程中,必须先将指针移动到目标位置,因此会用到记录的查找移动功能,这时可以调用CeSeekDatabaseEx函数来实现,其定于如下:
CEOID CeSeekDatabaseEx(HANDLE hDatabase,DWORD dwSeekType, DWORD dwValue, WORD wNumVals,
LPDWORD lpdwIndex);
   该函数的返回值CEOID可以用来对该条记录进行相应的操作,如读、编辑等。

4.其他的一些数据库操作函数

列举数据库: CeFindFirstDatabaseExCeFindNextDatabase

获得数据库的信息:CeOidGetInfoEx

释放通告消息结构体:CeFreeNotification
将数据缓冲到flash上:CeFreeNotification

获得打开的数据库所使用的句柄:CeGetDBInformationByHandle

设置数据库的各种参数:CeSetDatabaseInfoEx

列举所有转载的数据库卷并返回卷名:CeEnumDBVolumes

上文只是对用到的函数进行了罗列,由于其中的API函数参数较多,没有给出具体的解释,可以参考帮助文档。下文结合实际开发,对常用的函数和功能应用进行讲解。

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089