ADOConn.h #include <iostream> #import "C:/Program Files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") class ADOConn { _ConnectionPtr m_pConn; _RecordsetPtr m_pRecordset; char m_strConn[100]; bool m_state; public: ADOConn(); ADOConn(const char* strcon); bool Inition(); _RecordsetPtr GetRecordset(const char* sql); bool ExecUpdate(const char* sql); bool Close(); }; ADOConn.cpp #include "ADOConn.h" ADOConn::ADOConn() { m_state=false; } ADOConn::ADOConn(const char * pstrCon) { strcpy(m_strConn,pstrCon); m_state=false; } /*---------------------- Inition() ----------------------------*/ bool ADOConn::Inition() { if( !m_state ) { CoInitialize(NULL); m_pConn.CreateInstance(__uuidof(Connection)); try { // 连接数据库 m_pConn->Open( m_strConn, "","",adModeUnknown ); } catch(_com_error e) { std::cout << "数据库连接失败!" << std::endl; return false; } } return true; } /*---------------------- GetRecordset() ----------------------------*/ _RecordsetPtr ADOConn::GetRecordset(const char* sql) { m_pRecordset.CreateInstance(__uuidof(Recordset)); try { m_pRecordset->Open(sql, m_pConn.GetInterfacePtr(), // 应用 m_pConnection 变量 adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error e) { std::cout << e.ErrorMessage() << std::endl; return NULL; } return m_pRecordset; } /*---------------------- ExecUpdate() ----------------------------*/ bool ADOConn::ExecUpdate(const char* sql) { try { _variant_t tag; m_pConn->Execute(sql,&tag,adCmdText); } catch(_com_error e) { std::cout <<"In ADOConn.ExecUpdate()/n"<< e.ErrorMessage() << std::endl; return false; } return true; } /*---------------------- Close() ----------------------------*/ bool ADOConn::Close() { m_pRecordset->Close(); m_pRecordset = NULL; if(m_pConn->State) m_pConn->Close(); m_pConn=NULL; CoUninitialize(); return true; }