首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

急MFC中用ODBC动态建立数据源后连不上数据库怎么处理?

2013-03-26 
急!MFC中用ODBC动态建立数据源后连不上数据库怎么办?高手指点?建立另一个基于对话框的工程,能够编译过去,

急!MFC中用ODBC动态建立数据源后连不上数据库怎么办?高手指点?
建立另一个基于对话框的工程,能够编译过去,且能运行,在对话框的Dlg的构造函数中添加
BOOL bODBC = SQLConfigDataSource(NULL,ODBC_ADD_DSN,TEXT("Microsoft Access Driver (*.mdb)\0"),
 TEXT("DSN=Knowledge\0DBQ=KnowledgeSource.mdb"));
 if(!bODBC)
 {
 AfxMessageBox(TEXT("创建数据源失败"));
 exit(0);
 }
 if(!bODBC)
 {
 ::AfxMessageBox(TEXT("32位数据源配置错误"));
 }
然后在一个OnInitDialog函数中添加
db=new CDatabase;
 
 try
 {
 
 db->OpenEx(TEXT("DSN=Knowledge"),CDatabase::noOdbcDialog);
 
 }
 catch(CDBException * dbErr)
 {
 CString temp=TEXT("数据库连接失败,具体原因:\n");
 MessageBox(temp+dbErr->m_strError,TEXT("警告"),MB_YESNO|MB_ICONEXCLAMATION);
 dbErr->Delete();
 exit(1);
 }
最后在一个处理函数中添加
CRecordset *m_pset = NULL;
 m_pset->Open(CRecordset::dynaset,strtmp,CRecordset::none);
 
 strtmp.Format(TEXT("%s"),m_pset->GetRecordCount());
 AfxMessageBox(strtmp);
 CODBCFieldInfo fieldinfo; 
 m_pset->GetODBCFieldInfo(short(2),fieldinfo);
 columnname2 = fieldinfo.m_strName;
 m_pset->GetODBCFieldInfo(short(3),fieldinfo);
 columnname3 = fieldinfo.m_strName;
 
 while(!m_pset->IsEOF())
 {
 m_pset->GetFieldValue(short(2),vkey);
 m_pset->GetFieldValue(short(3),answer);
 vkey.TrimRight();
 answer.TrimRight();
 if(m_strText.Find(vkey)>0)
 {
 
 m_strText+=answer;
 break;
 }
 m_pset->MoveNext();
 
 }
 //CString strtmp = TEXT("select vkey from answer where vkey like")+;
 
 m_strText+=pwzText;
 UpdateData(FALSE);
 m_pset->Close();
当我调试的时候,运行到m_pset->Open(CRecordset::dynaset,strtmp,CRecordset::none);时出现错误,错误显示好像是:
ODBC驱动程序:Microsoft Access找不到E:\Workspace\develop\C++Test\Toursit\Toursit\KnowledgeSource.mdb
[解决办法]
检查下路径设置对不对,库被没被包含进去。

热点排行