将数据库卷挂载好之后,就可以在卷内新创建一个EDB数据库,调用函数CeCreateDatabaseWithProps()实现:
CEOID CeCreateDatabaseWithProps(
PCEGUID pGuid,
CEDBASEINFOEX* pInfo,
DWORD cProps,
CEPROPSPEC* prgProps
);
l 参数pGuid为挂载数据库的全局标识CEGUID
l 参数pInfo指定数据库的属性,为一个指向结构体CEDBASEINFOEX的指针。
l 参数cProps指定参数prgProps数组的元素个数。
l 参数prgProps指定新建数据库的属性,为一个CEPROPSPEC结构体数组。在EDB中必须设置这些属性,才能向数据库内写入数据,结构体CEPROPSPEC的定义如下:
typedef struct CEPROPSPEC {
WORD wVersion;
CEPROPID propid;
DWORD dwFlags;
LPWSTR pwszPropName;
DWORD cchPropName;
} CEPROPSPEC;
n 成员wVersion为结构体版本号,必须设置为1。
n 成员propid为字段ID,表示数据库中的字段。
n 成员dwFlags为字段标志,可以取下面值之一或组合:DB_PROP_COMPRESSED(将字段压缩存储)和DB_PROP_NOTNULL(字段不能为空,也不能设置为NULL)。
n 成员 pwszPropName为字段的名称,为可选。如果没有指定字段的名称,系统将产生一个内部名称。
n 成员cchPropName为可选的字段名称的长度,最大可为CEDB_MAXDBASENAMELEN (128).
如果创建EDB数据库成功,函数将返回数据库的对象标志(OID);创建失败将返回NULL。调用GetLastError()获取错误信息,可能的错误值有:
n E_FAIL: CEDBASEINFOEX结构体中指定数据库名称的szDbaseName成员的长度超过CEDB_MAXDBASENAMLEN。
n ERROR_ACCESS_DENIED: 试图创建一个包含2个可排序主键的数据库
n ERROR_ALREADY_EXISTS: 参数prgProps包含的某个字段ID或字段名字已经存在。
n ERROR_BAD_LENGTH: 某个字段名称的长度超过128。
n ERROR_DISK_FULL: 磁盘空间不足,无法创建数据库。
n ERROR_DUP_NAME: 指定名字的数据库在卷中已经存在。
n ERROR_INVALID_PARAMETER: 某个参数不合法。
n ERROR_NOT_FOUND: 参数pGuid指定的卷不存在。
n ERROR_NOT_SUPPORT: 在CEDBASEINFOEX结构体中使用CEDB不支持的值,如CEDB_VALIDMODTIME或CEDB_SYSTEMDB。
用户还可以删除挂载的数据库卷内的指定数据库,通过函数CeDeleteDatabase()实现:
BOOL CeDeleteDatabase(
PCEGUID pGuid
CEOID oid
);
l 参数pGuid指定将被从中删除数据库的挂载数据库卷的CEGUID。
l 参数oid指定将被删除的数据库的对象ID,这个数据库在指定的数据库卷内必须存在。
删除数据库成功,函数返回TRUE;失败返回FALSE。注意用户不能删除一个正在打开的数据库。