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

  

你可能感兴趣的:(Access)