VC下利用ADO连接Access数据库 2023-09-17 14:24 #include #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename ("EOF", "adoEOF") int main(){ //使用ADO连接数据库... //--------------------------------------------------------------------------------- _ConnectionPtr m_pConnection; CoInitialize(NULL); m_pConnection.CreateInstance(__uuidof(Connection)); // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息, // 因为它有时会经常出现一些想不到的错误。 try { // 打开本地Access库db1.mdb m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown); } catch(_com_error e) { cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<Open("SELECT * FROM Home2", m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error *e) { //AfxMessageBox(e->ErrorMessage()); cout<ErrorMessage()<BOF) m_pRecordset->MoveFirst(); else { cout<<"表内数据为空"<adoEOF) { var = m_pRecordset->GetCollect("ID"); if(var.vt != VT_NULL) strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t转字符串 var = m_pRecordset->GetCollect("X"); if(var.vt != VT_NULL) strX=_com_util::ConvertBSTRToString((_bstr_t)var); var = m_pRecordset->GetCollect("Y"); if(var.vt != VT_NULL) strY=_com_util::ConvertBSTRToString((_bstr_t)var); cout<MoveNext(); } } catch(_com_error *e) { cout<ErrorMessage()<Close(); m_pRecordset = NULL; //-------------------------------------------------------------------------------------- //关闭数据库连接 //-------------------------------------------------------------------------------------- if(m_pConnection->State) m_pConnection->Close(); m_pConnection= NULL; return 0; } #import "msjro.dll" no_namespace //压缩数据库 bool compressMDB2(const std::string& strFileName, const std::string& strNewFileName) { CoInitialize(NULL); try { std::string strSourceConnection; std::string strDestConnection; strSourceConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; strSourceConnection += strFileName; strSourceConnection += ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password='123456'"; strDestConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; strDestConnection += strNewFileName; strDestConnection += ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password='123456'"; IJetEnginePtr jet(__uuidof(JetEngine)); jet->CompactDatabase(strSourceConnection.c_str(), strDestConnection.c_str()); } catch(_com_error &e) { cout << "异常:"; cout << e.Description() << endl; CoUninitialize(); return false; } CoUninitialize(); return true; }