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即可。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值