1.添加代码在StdAfx.h中
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")2.初始化OLE/COM库环境
在应用程序类的OnInitance()中添加代码
::CoInitialize(NULL);或者更完美的
if(FAILED(::CoInitialize(NULL)))
{
AfxMessageBox("ADO Init Failed");
return false;
}3.连接数据库
首先定义指针
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;然后连接吧.在OnInitDialog或者OnInitance都好,下面用例子说明BOOL C------::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString strname;
strname.Format("uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=shujuku.mdb;");
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect=strname;
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
_bstr_t bstrSQL;
bstrSQL = "select * from employees order by 编号 desc";
CString strText;
int i=9;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
/*while(!m_pRecordset->adoEOF)
{
arrays[0][i] = (char*)(_bstr_t)m_pRecordset->GetCollect("编号");
arrays[1][i] = (char*)(_bstr_t)m_pRecordset->GetCollect("姓名");
arrays[2][i] = (char*)(_bstr_t)m_pRecordset->GetCollect("职务");
arrays[3][i] = (char*)(_bstr_t)m_pRecordset->GetCollect("部门");
m_Grid.InsertItem(0,0);
m_Grid.SetItemText(0,0,arrays[0][i]);
m_Grid.SetItemText(0,1,arrays[1][i]);
m_Grid.SetItemText(0,2,arrays[2][i]);
m_Grid.SetItemText(0,3,arrays[3][i]);
m_pRecordset->MoveNext();
i--;
}*/ //用于在ListCtrl中显示
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close(); //关闭
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
本文介绍了如何在Visual C++ 6.0中使用ADO连接数据库,通过在StdAfx.h文件中添加代码,并在应用程序类的 OnInitInstance() 函数中初始化数据库连接,详细阐述了指针的定义和使用过程。
3761

被折叠的 条评论
为什么被折叠?



