由于項目要發(fā)布一個單機版,原來用的數(shù)據(jù)庫是大型數(shù)據(jù)庫。需要在單機版中用Access比較方便,另外也不能讓用戶自己創(chuàng)建數(shù)據(jù)源,最終的方案就是在程序中直接訪問(*.mdb)Access數(shù)據(jù)庫文件,下面簡要給出在VC6.0中的訪問Access數(shù)據(jù)庫文件的方法:
注:data.mdb數(shù)據(jù)庫文件中有一個表(tperson),有一個字段(name)
?CString strSql;
?CString strName;
?CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
?CString strDsn;
?CString strFile = "E:\\CurrentWork\\AccessTest\\data.mdb";
?strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
?TRY
?{
???CDatabase m_db;//加上這個定義,本來這個是一個類中的成員,暫時就放在這。
???m_db.Open(NULL,false,false,strDsn);
??CString strConnect = m_db.GetConnect();
??CRecordset rs(&m_db);
??strSql = "select * from tperson";
??rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
??while(!rs.IsEOF())
??{
???rs.GetFieldValue("name",strName);//讀取數(shù)據(jù)庫內(nèi)容的代碼
???rs.MoveNext();
??}
??m_db.Close();
?}
?CATCH(CDBException,e)
?{
??AfxMessageBox("Database Error:" + e->m_strError);
?}
?END_CATCH;
其中最關鍵的地方也就是strDSN這個字符串的內(nèi)容要正確。