EDB打开数据库失败

lorsa 2009-07-13 06:54:50
想打开输入库,然后传入一个值,收缩一条记录,但是打开数据库失败。

CEOID oid = NULL;
//CEGUID guidVol;

CREATE_INVALIDGUID(&m_ceGuid);

//打开数据库卷,不存在时调用会失败
if (!CeMountDBVolEx(&m_ceGuid, L"GreenMaster.db", NULL, OPEN_EXISTING))
{
ErrorExit(TEXT("CeMountDBVolEx"));
return FALSE;
}

SORTORDERSPECEX sortOrder;
sortOrder.wVersion = SORTORDERSPECEX_VERSION;
sortOrder.wNumProps = 1;
sortOrder.wKeyFlags = CEDB_SORT_UNIQUE;
sortOrder.rgPropID[0] = PID_PHONENUMBER;
sortOrder.rgdwFlags[0] = CEDB_SORT_DESCENDING;


// Open Database by Name to get its oid.
if (( m_hDB = CeOpenDatabaseInSession(NULL, &m_ceGuid, &oid, L"PersProperty", &sortOrder,
CEDB_AUTOINCREMENT, NULL)) == INVALID_HANDLE_VALUE)
{
//DWORD error = GetLastError();
//DEBUGMSG(TRUE, (TEXT("Testing item count against maximum %d\r\n"),
// error));
ErrorExit(L"CeOpenDatabaseInSession") ;

return FALSE;
}
错误信息是参数错误,请问下是什么原因
...全文
333 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lorsa 2009-07-14
  • 打赏
  • 举报
回复
CeOpenDatabaseInSession倒数第三个参数,要排序的字段。只有带了这个参数打开,CeSeekDatabaseEx才能把记录移到关键字等于某个值那条记录。这样查找关键字等于某个值的记录是不要快一点?CeOpenDatabaseInSession报参数错误。
cytlyy 2009-07-14
  • 打赏
  • 举报
回复
参考:
CEOID oidCalllog = 0;
DWORD cbRecProps = 0;
CEGUID g_ceguidInitDB;
CENOTIFICATION *pCalllogNotification;
CENOTIFYREQUEST edbCalllog;
HANDLE g_hDatabase;
if(FALSE == CeMountDBVolEx(&g_ceguidInitDB, L"\\pim.vol", 0, OPEN_EXISTING))
{
MessageBox(hWnd,TEXT("could not mount VOL"),NULL,MB_OK);
DWORD dwErr = GetLastError();
CeUnmountDBVol(&g_ceguidInitDB);
}

edbCalllog.hwnd = hWnd;
edbCalllog.dwFlags = CEDB_EXNOTIFICATION;
edbCalllog.dwSize = sizeof(CENOTIFYREQUEST);
edbCalllog.hHeap = NULL;
g_hDatabase = CeOpenDatabaseInSession(NULL, &g_ceguidInitDB, &oidCalllog, L"Contacts Database", NULL,0, &edbCalllog);
lorsa 2009-07-14
  • 打赏
  • 举报
回复
高手帮帮忙啊,在线等

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧