1 用odbc做一个数据源
2 连接
::CoInitialize(NULL);
pConn.CreateInstance("ADODB.Connection");
pConn->Open("Data Source=sss;Provider=MSDASQL;","test","test",adModeUnknown);3 使用// ADOInterz.h: interface for the CADOInterz class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_ADOINTERZ_H__85015709_1ADD_4289_9B80_4F09B5406158__INCLUDED_)
#define AFX_ADOINTERZ_H__85015709_1ADD_4289_9B80_4F09B5406158__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CADOInterz  
{
public:
void MoveNext();
BOOL IsEmpty();
void ReleaseMem();
void ExecuteSQL(CString query,BOOL fRead=TRUE,CADORecordBinding * tableSet=NULL);
//fRead是读或写记录集的标志。
IADORecordBinding * m_piRs;
_variant_t m_vRowsAffected;
_RecordsetPtr m_pRs;
CADOInterz(_ConnectionPtr pConn=NULL);
virtual ~CADOInterz();private:
_ConnectionPtr m_pConn;
};#endif // !defined(AFX_ADOINTERZ_H__85015709_1ADD_4289_9B80_4F09B5406158__INCLUDED_)
// ADOInterz.cpp: implementation of the CADOInterz class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "pro1.h"
#include "ADOInterz.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CADOInterz::CADOInterz(_ConnectionPtr pConn)
{
m_pConn=pConn;
m_piRs=NULL;
m_pRs=NULL;
//?????????????
} CADOInterz::~CADOInterz()
{
ReleaseMem();
}void CADOInterz::ExecuteSQL(CString query,BOOL fRead,
CADORecordBinding * tableSet)
{
ReleaseMem();
m_pRs.CreateInstance(__uuidof(Recordset));
_variant_t sql=query;
if(fRead){
m_pRs=m_pConn->Execute((_bstr_t)query,&m_vRowsAffected,adCmdText);
}else{
m_pRs->Open(sql,_variant_t((IDispatch *)m_pConn,true)
,adOpenStatic,adLockOptimistic,adCmdText);
}
if(tableSet!=NULL){
if(FAILED(m_pRs->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&m_piRs)))
_com_issue_error(E_NOINTERFACE);
m_piRs->BindToRecordset(tableSet);
}
}void CADOInterz::ReleaseMem()
{
if(m_pRs)
m_pRs->Close();
m_pRs=NULL;
if(m_piRs)
m_piRs->Release();
m_piRs=NULL;
}BOOL CADOInterz::IsEmpty()
{
if(m_pRs!=NULL)
return m_pRs->EndOfFile;
return TRUE;
}void CADOInterz::MoveNext()
{
m_pRs->MoveNext();
}
这是我写的,不太全,参考一下吧,我的email:[email protected]