wince EDB操作的一些问题

1、在使用CeCreateDatabaseWithProps创建数据表,在没有添加排序功能时候,创建成功;但是在添加排序功能之后

ceDbInfo.wVersion=2;
ceDbInfo.dwFlags=CEDB_VALIDNAME|CEDB_VALIDTYPE|CEDB_VALIDSORTSPEC;
wcscpy(ceDbInfo.szDbaseName,ModuleName);
ceDbInfo.dwDbaseType=0;
//添加排序功能
ceDbInfo.wNumSortOrder=1;
ceDbInfo.rgSortSpecs[0].wVersion=2;
ceDbInfo.rgSortSpecs[0].wNumProps=1;
ceDbInfo.rgSortSpecs[0].wKeyFlags=CEDB_SORT_UNIQUE;
ceDbInfo.rgSortSpecs[0].rgPropID[0]=PID_ProgramName;
ceDbInfo.rgSortSpecs[0].rgdwFlags[0]=CEDB_SORT_DESCENDING;


再创建之后就失败了,查看GetLastError后返回87(ERROR_INVALID_PARAMETER)。后来经过网上搜索后发现头文件包含有问题。我原始头文件包含为:
#ifndef EDB
#define EDB
#endif
extern "C"
{
#include <Windbase_edb.h>
};

也就是说在windbase.h前只要定义了EDB就自动包含了windbase_edb.h。 另外在windbase.h文件中,有些东西既可以用于EDB也可以用于CEDB, 具体区分他们就是看是否定义EDB了。 问题的关键是在#include <windbase.h> 之前 #define EDB, 但这还是不够的, 因为在winbase.h已经包含了windbase.h, 而winbase.h又包含在windows.h中, 也就是说要在windbase.h之前就定义EDB,就要在#include <windows.h>之前定义EDB。
 换而言之,要使用EDB数据库API可以在Stdafx.h初始位置添加#define EDB即可。 


你可能感兴趣的:(c,数据库,api,WinCE)