(1) 在StdAfx.h中添加下面一句话:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "rsEOF")
(2) void CADO_2Dlg::OnBtnQuery()
{
CoInitialize(NULL); // 初始化COM库
_ConnectionPtr pConn(__uuidof(Connection)); // 建立Connection
_RecordsetPtr pRst(__uuidof(Recordset)); // 建立Recordset
_CommandPtr pCmd(__uuidof(Command)); // 建立Command
try
{
//pConn->ConnectionString = "Provider=SQLOLEDB;Password=XXX;Persist Security Info=True;User ID=sa;Initial Catalog=pubs"; //此句正确
pConn->ConnectionString = "driver={SQL Server};Server=(local);DATABASE=pubs;UID=sa;PWD=xxx";
pConn->Open("", "", "", adConnectUnspecified);
//pRst = pConn->Execute("select * from authors", NULL, adCmdText);
//pRst->Open("select * from authors", _variant_t((IDispatch*) pConn), adOpenDynamic, adLockOptimistic, adCmdText);
pCmd->put_ActiveConnection(_variant_t((IDispatch*) pConn));
pCmd->CommandText = "select * from authors";
pRst = pCmd->Execute(NULL, NULL, adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("au_lname")); //查询au_lname字段
pRst->MoveNext();
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("Error: %s", e.ErrorMessage());
AfxMessageBox(errormessage);
}
AfxMessageBox("查询结束!");
pRst->Close();
pConn->Close();
pRst.Release(); // 释放相应COM接口上的引用计数
pConn.Release();
CoUninitialize(); // 卸载COM库
}