建立一个连接数据库的类:
1.头文件:ADOConn.h
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF") class ADOConnN
{
public:
_ConnectionPtr m_pConnect;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecord; void OnInitADOConn();//初始化数据库连接
void ExitConnect();//断开数据库连接
void ExecuteSQL(CString sqlstr);//执行一般的数据库插入、更新、修改等
_RecordsetPtr GetRecord(CString sqlstr);//返回数据库中查询的数据集等
};
2.在StdAfx.h头文件中添加:
#include "ADOConn.h"
3.实现文件:ADOConn.cpp
#include "stdafx.h" void ADOConnN::OnInitADOConn()
{
::CoInitialize(NULL);
try
{ //创建连接对象实例
m_pConnect.CreateInstance("ADODB.Connection");
//设置连接字符串
CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=localwork.mdb;"; //数据库名称为localwork.mdb
//使用Open方法连接数据库
m_pConnect->Open((_bstr_t)strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("连接数据失败,请检查数据库路径是否正确!");
}
} void ADOConnN::ExitConnect()
{
if(m_pRecord!=NULL)
m_pRecord->Close();
m_pConnect->Close();
::CoUninitialize();
} void ADOConnN::ExecuteSQL(CString sqlstr)
{
m_pConnect->Execute((_bstr_t)sqlstr,NULL,adCmdText);
} _RecordsetPtr ADOConnN::GetRecord(CString sqlstr)
{
_RecordsetPtr m_precordset=m_pConnect->Execute((_bstr_t)sqlstr,NULL,adCmdText);
return m_precordset;
}
4.应用:
CString bstrSQL ="select * from tb_UserInfo";//tb_UserInfo为localwork.mdb中的一个表
ADOConnN con;//实例化连接数据库对象
con.OnInitADOConn();//初始化数据库对象中的一些初始化工作
con.m_pRecord=con.GetRecord(bstrSQL);//获取数据集
while(!con.m_pRecord->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)con.m_pRecord->GetCollect("Username"));//Username为tb_UserInfo表的一列
m_Grid.SetItemText(0,1,(char*)(_bstr_t)con.m_pRecord->GetCollect("password"));//password为tb_UserInfo表的一列
//将记录集指针移动到下一条记录
con.m_pRecord->MoveNext();
}
con.ExitConnect();//断开数据库连接