Windows CE 基础数据库编程(基于EDB)

Windows CE 基础数据库编程

1.1EDB
    数据库EDB是Windows CE 自带的,在Windows CE 5.0基础上增加了支持事务处理功能,使用计划定义数据库,增加了字段排序,“流”字段类型,多用户访问。



2常用的数据库API说明

2.1装配数据卷
    什么是数据卷?在Windows CE2.1开始,数据库存放在卷中,而不是直接存放在对象存储库中。在windows CE 中如果想要把数据存放在文件中,要使用数据卷,就需要先装配好数据卷;然后关闭数据库,则是要卸载数据卷。

    装配数据卷的目的只有两个:新建数据卷;打开已经存在的数据库

在Windows  CE中装配数据卷通过函数
/*
    该函数执行成功则是返回true,同时还有pGuid所设置的数值,此数值可以传递  
    给其他数据库的函数使用;如何失败,则是会调用GetLastError的信息(详细见window+CE嵌入式编程手册)

*/
Bool CeMoutDBVolEx{
    PCEGUID pGuid,//标识数据库文件的GUID
    LPWSTR lpwszDBVol,//表示装配数据库卷的文件名称
    CEVOLUMEOPTIONS* pOptions,//设置数据卷的行为和性能,设置为NULL,
                                                         //则是加载默认的
    DWORD dwFlags,//数据卷被加载的方式
};

加载的方式有:

2.2卸载数据卷
    数据卷用完后,应该使用来卸载数据卷
   /*
  */
Bool CeUnmountDBVol{
    PCEGUID  pGUid;//此pGuid 对应装配数据卷中的pGuid
};

2.3新建数据库
  /*
   EDB使用来新建数据库
  */
 CEOID CeCreateDataWithProps{
    PCEGUID pGuid,//已经装配的数据卷
    CEDBASEINFOEX* pInfo,//指向CEDBASEINFOEX结构体的指针,用来标识数
                                           //  据库名称,类型,排序的方式等
    DWORD cProps,//prgProps中数据个数
    CEPROPSPE* prgProps,
};

2.3.1 CEDBASEINFOEX结构体的定义
typedef struct  CEDBASEINFOEX{
    WORD wVersion;//表示其结构图版本,设置为2
    WORD wNumSortOrder;//数据库中能被激活的排序字段个数,最大为16
    WORD dwFlags;//数据库状态的标识
    WCHAR szDbaseName[CEDB_MAXDBASENAMELEN];//数据库的名称
    DWORD dwDbaseType;//数据库类型标识
    DWORD dwNumRecords;//数据库中的记录数
    DWORD dwSize;//EDB中未使用
    FILETIME ftLastModified;//EDB中未使用
    CESORTORDERSPEC rgSortSpecs[CEDB_MAXSORTORDER];//
     }CEDBASEINFOEX;//

2.4创建会话对象
    原因是,数据库的使用都是在会话连接,在EDB中使用CECreateSession
    HANDLE CeCreateSession(
        CEGUID* pGuid//表示数据库中的GUID,在数据卷装配是得到的数值
     );
2.5打开数据库
HANDLE CeCreateDatabaseInSession(
    HANDLE hSession,//会话句柄,由   CeCreateSession得到
    PCEGUID pGuid,//数据库的GUID,根据 lpwszName和 pGuid来打开数据库
    PCEGUID poid,//打开数据库的标识
    LPWSTR lpwszName,//打开数据库的名称
    SORTORDERSPECEX* pSort,//当前数据库的排序方式
    DWORD dwFlags,//
    CENOTIFYREQUEST* pRequest,//
     );
    2.6事务操作
         CeBeginTransaction()创建一个事务的操作; CeBeginTransaction()结            
          束一个事务的操作。事务操作使得数据库的操作是一致的

2.6.1事务的开始
Bool CeBeginTransaction(
        HANDLE hSession,//回话的句柄,在 CeCreateDatabaseInSession中获取                        
       CEISOLATIONLEVEL isoLevel,//表示事务的隔离等级
     );

2.6.1事务的结束
BOOL CeEndTransaction(
        HANDLE hSession,//回话的句柄,在 CeCreateDatabaseInSession中获取                        
        BOOL fCommit,//表示结束事务的方式,第一种方式是保存之前的事务操作;
                                       //第二种方式是混回事务,把之前的操作取消掉
     );


2.7删除数据库
BOOL CeDeleteDatabase(
    PCEGUID pGUID,//表示要删除数据卷的标识
    CEOID oid,     //表示要删除的数据库对象的标识
);

2.8枚举数据库卷以及数据库
BOOL CeEnumDBVolumes(
    PCEGUID pGuid,//用来标识数据库卷,首次使用需要      
                               //用 CREATE_INVALIDEDBGUID标识无效
    LPWSTR pwszName,//数据库卷的名称
    DWORD cchMaxName,//   存储数据卷的长度
);

2.9查找和移动数据库的记录

猜你喜欢

转载自blog.csdn.net/XJH0918/article/details/52748868
ce
今日推荐