一、在:CWinApp::InitInstance 函数中用AfxOleInit初始化 COM
if (!AfxOleInit())
{
AfxMessageBox("AfxOleInit Failed!");
return FALSE;
}
二、用 #Import 引入 ADO 对象 Dll:msado15.dll
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF")
//Notice:这句话输入完毕后,VC就会在:程序生成目录中(Debug/Release)自动产生两个文件:
// msado15.tlh
// msado15.tli
三、使用 ADO 访问数据库
void CPrjADOAccessDatabaseTestDlg::OnbtnReadSqlServer()
{
// TODO: Add your control notification handler code here
CString strSql;
CString strMsg;
long lRecordCount;
_RecordsetPtr rs;
_ConnectionPtr conn;
_variant_t var;
//---------------------------------------------------------
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));
//---------------------------------------------------------
strSql = "select FirstName from dbo.Employees";
//连接数据库
conn->Open("Provider=SQLOLEDB;SERVER=127.0.0.1;DATABASE=AIS20070417160827;UID=sa;PWD=sa","","",-1);
//---------------------------------------------------------
//记录集取数
rs->CursorLocation = adUseClient;
rs->CursorType = adOpenForwardOnly;
rs->LockType = adLockReadOnly;
rs->Open("select * from t_User",conn.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);
//遍历记录集
while(!rs->adoEOF)
{
var = rs->Fields->GetItem("FName")->Value;
strMsg = (LPCSTR)_bstr_t(var);
MessageBox(strMsg);
strMsg.ReleaseBuffer();
rs->MoveNext();
}
//清理战场,关闭对象
rs->Close();
conn->Close();
}