将cemail中的内容读取出来,然后备份以及还原的过程
提纲:
主要描述如何读取CEDB数据库,然后备份,还原!在wince程序设计这本书上有比较详细的介绍,而我只有英文电子
檔,看起来还是比较的吃力!
1.打开cedb数据库
2.Read数据库内容并存储
3.调整OID
Wince提供了简单的数据库系统,最多支持4种排序索引!能满足一些数据量不大的数据的组织管理,最常见的
用处就是Cemail.vol管理信息内容。CEDB数据库可以将数据库文件存储在卷中,而数据库卷实际上是文件,容
易被用户误删除。
标示一条数据的最基本数据是一个oid,数据与数据之间通过oid来建立配对的关系。
1.打开
装配数据库卷用到下面这个函数:
BOOL CeMountDBVol()
这个函数可以装配或者创建一个数据库卷,而我们在这里用OPEN_EXISTING将cemail.vol装备后得到guid,然后
进行下面的操作。同时我们需要CREATR_ALWAYS创建另外一个数据库卷来备份cemail.vol的内容!
用CeFindFirstDatabaseEx找到cemail.vol的文件handle后,就可以开始准备打开vol进行操作.
创建数据库卷的时候没有打开数据库卷,所以必须使用单独的函数CeOpenDatabaseEx来打开数据库卷.
2.read and store
打开vol之后就可以开始读取数据了,读取的同时在创建的新数据库里面创建一条数据,并将读出的数据存入新
的数据库当中
CeOidGetInfoEx返回一个结构体指针,这个结构体包含了每个数据对象的大量信息,以及其父oid,这个oid在
还原的时候起到很重要的作用。
在Create newdatabace 以及seekdatabase(同文件操作类似)后,开始读取数据到buffer并备份
函数分别为
CeReadRecordPropsEx
CeWriteRecordProps
3.调整oid
调整oid其实说起来是很简单的事,不过做起来比较繁杂,在cemail里面,一条信息的存储需要几个对象分别完成,
还原的时候介于用户的当前数据库已经存在诸多oid,故不能确保备份文件中的oid是否会与已有oid冲突,所以需
要采取先创建,然后修改数据对象的内容,使之与新的 oid对应起来
在调整前我们可以使用一个叫做dbview的工具来查看cedb数据库中oid的状态!以确定需要调整的部分。
cemail中包含了以下几个数据卷,数据之间用oid进行关联
fldr*****, pmailAttachs, pmailFolder , pmaileMsgs, pmailOldTables,pmailMsgClasses.pmailNamedProps
其中
pmailFolders包含了系统收件箱名称的信息,如mmsoutlook sms下面的各个folder名称
pmailMsg记录发件人的一些信息,这写信息同该发件人所发的内容(存储在fldr****中)通过oid对应起来
在遍历数据库的时候以上的部分都会读取到,可以很灵活的根据需要来调整oid
我会抽时间来详细描述以上的这些步骤,有朋友问我要代码,那就实在对不住了,我没有这个权力把代码放出.