VC++6.0连接Access数据库

建立一个连接数据库的类:

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();//断开数据库连接

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。