|
程序中已经包括了大开数据库,但是还是不好使,就是EVC高级编程及其应用开发那本书上带的例子,是好用的,但我在PC104上怎么也不好使
//打开数据库
void CCEDBUseDlg::OnBtnopen()
{
//1、挂载数据库卷,如果存在则打开,不存在,就新建一个
if (!CeMountDBVol(&m_ceGuid,DBFILENAME,OPEN_ALWAYS))
{
AfxMessageBox(_T("打开或新建数据卷失败"));
return;
}
//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_NO;
ceDbInfo.rgSortSpecs[0].dwFlags = CEDB_SORT_CASEINSENSITIVE; //升序,且大小写无关
ceDbInfo.rgSortSpecs[1].propid = PID_NAME;
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("卸载数据库文件卷失败"));
}
return ;
}
//4、创建数据库后,应紧接着打开数据库
m_hDB = CeOpenDatabaseEx(&m_ceGuid,&m_ceOid,DBTABLENAME,NULL,CEDB_AUTOINCREMENT,NULL);
if (m_hDB == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("打开数据库失败"));
//此处得卸载数据库卷
if (!CeUnmountDBVol(&m_ceGuid))
{
AfxMessageBox(_T("卸载数据库文件卷失败"));
}
return ;
}
}
else
{
AfxMessageBox(_T("打开数据库失败"));
//此处得卸载数据库卷
if (!CeUnmountDBVol(&m_ceGuid))
{
AfxMessageBox(_T("卸载数据库文件卷失败"));
}
return ;
}
}
} |
|