|
昨天尝试着在一个应用程序里用wince数据库,结果数据库创建成功了,却打不开数据库,郁闷之极。代码如下:
- //1、挂载数据库卷,如果存在则打开,不存在,就新建一个
- if (!CeMountDBVol(&m_ceGuid,DBFILENAME,OPEN_ALWAYS))
- {
- AfxMessageBox(_T("打开或新建数据卷失败"));
- }
- //2、接着打开数据库
- m_hDB = CeOpenDatabaseEx(&m_ceGuid,&m_ceOid,DBTABLENAME,NULL,CEDB_AUTOINCREMENT,NULL);
- if (m_hDB == INVALID_HANDLE_VALUE)
- {
- //3、 //如果数据库不存在,就新建之
- if (GetLastError() == ERROR_FILE_NOT_FOUND)
- {
- CEDBASEINFO ceDbInfo;
- ceDbInfo.dwFlags = CEDB_VALIDNAME | CEDB_VALIDTYPE | CEDB_VALIDSORTSPEC ;
- wcscpy(ceDbInfo.szDbaseName , DBTABLENAME);
- ceDbInfo.dwDbaseType = 0;
- ceDbInfo.wNumSortOrder = 2 ; //排序字段数目
- ceDbInfo.rgSortSpecs[0].propid = PID_NAME;
- ceDbInfo.rgSortSpecs[0].dwFlags = CEDB_SORT_CASEINSENSITIVE; //升序,且大小写无关
- ceDbInfo.rgSortSpecs[1].propid = PID_WAGE;
- ceDbInfo.rgSortSpecs[1].dwFlags = CEDB_SORT_CASEINSENSITIVE; //升序,且大小写无关
- m_ceOid = CeCreateDatabaseEx(&m_ceGuid,&ceDbInfo);
- if (m_ceOid == 0)
- {
- AfxMessageBox(_T("创建数据库失败"));
- //此处得卸载数据库卷
- if (!CeUnmountDBVol(&m_ceGuid))
- {
- AfxMessageBox(_T("卸载数据库文件卷失败"));
- }
- }
- //4、创建数据库后,应紧接着打开数据库
- m_hDB = CeOpenDatabaseEx(&m_ceGuid,&m_ceOid,DBTABLENAME,NULL,0,NULL);
- if (m_hDB == INVALID_HANDLE_VALUE)
- {
- AfxMessageBox(_T("打开数据库失败"));
- //此处得卸载数据库卷
- if (!CeUnmountDBVol(&m_ceGuid))
- {
- AfxMessageBox(_T("卸载数据库文件卷失败"));
- }
- }
- }
- else
- {
- AfxMessageBox(_T("打开数据库失败"));
- //此处得卸载数据库卷
- if (!CeUnmountDBVol(&m_ceGuid))
- {
- AfxMessageBox(_T("卸载数据库文件卷失败"));
- }
- }
- }
复制代码
大牛们快来救我啊!
|
|