將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
我會抽時間來詳細描述以上的這些步驟,有朋友問我要代碼,那就實在對不住了,我沒有這個權力把代碼放出.