建立一个连接数据库的类:
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();//断开数据库连接
时间: 2024-10-06 12:22:34