以通过ADO连接ACCESS数据库为例,建立CADOConn类,方便数据库操作。
ADOConn.h文件
// ADOConn.h: interface for the CADOConn class.
//
//
#if !defined(AFX_ADOCONN_H__6D332E0A_E24A_4C55_A6E3_73479D3A1E72__INCLUDED_)
#define AFX_ADOCONN_H__6D332E0A_E24A_4C55_A6E3_73479D3A1E72__INCLUDED_
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CADOConn
{
public:
BOOL ExecuteSQL(_bstr_t bstrSQL);//执行SQL语句
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);//查询数据库
void ExitConnect();//断开数据库
void OnInitADOConn();//连接数据库
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
CADOConn();
virtual ~CADOConn();
};
#endif // !defined(AFX_ADOCONN_H__6D332E0A_E24A_4C55_A6E3_73479D3A1E72__INCLUDED_)
ADOConn.cpp文件
// ADOConn.cpp: implementation of the CADOConn class.
//
//
#include "stdafx.h"
#include "animal cognition.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//
// Construction/Destruction
//
CADOConn::CADOConn()
{
}
CADOConn::~CADOConn()
{
}
void CADOConn::OnInitADOConn()
{
try
{
//创建连接对象实例
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
CString strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Mouse.mdb;Persist Security Info=False";
//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
//m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Mouse.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
void CADOConn::ExitConnect()
{
if(m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集指针对象实例
//m_pRecordset.CreateInstance(__uuidof(Recordset));//该句也可以使用
m_pRecordset.CreateInstance("ADODB.Recordset");
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
return m_pRecordset;
}
BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}
CADOConn使用举例
添加头文件#include "ADOConn.h"
根据数据库信息更新列表控件
void CMyAnalysis::RefreshList()
{
int i=0;
CString sql,str1;
//设置查询字符串
sql = "select * from Mouse";
CADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
m_AdoConn.m_pRecordset = m_AdoConn.GetRecordSet(_bstr_t(sql));
m_RecordList.DeleteAllItems();//清空列表控件内容
while(!m_AdoConn.m_pRecordset->adoEOF)
{
m_RecordList.InsertItem(0,"");
i++;
str1.Format("%d",i);
m_RecordList.SetItemText(0,0,str1);
m_RecordList.SetItemText(0,1,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("LabPerson"));
m_RecordList.SetItemText(0,2,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("LabParter"));
m_RecordList.SetItemText(0,3,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("LabClerk"));
m_RecordList.SetItemText(0,4,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("LabSite"));
m_RecordList.SetItemText(0,5,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("AnimalNo"));
m_RecordList.SetItemText(0,6,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Sex"));
m_RecordList.SetItemText(0,7,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Weight"));
m_RecordList.SetItemText(0,8,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Age"));
m_RecordList.SetItemText(0,9,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("ThirstyTime"));
m_RecordList.SetItemText(0,10,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Award"));
m_RecordList.SetItemText(0,11,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Plan"));
m_RecordList.SetItemText(0,12,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("BeginTime"));
m_RecordList.SetItemText(0,13,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("EndTime"));
m_RecordList.SetItemText(0,14,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Right"));
m_RecordList.SetItemText(0,15,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Wrong"));
m_RecordList.SetItemText(0,16,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("TimeOut"));
m_RecordList.SetItemText(0,17,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Accuracy"));
m_RecordList.SetItemText(0,18,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Note"));
m_RecordList.SetItemText(0,19,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Video"));
m_RecordList.SetItemText(0,20,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Remarks"));
//将记录集指针移动到下一条记录
m_AdoConn.m_pRecordset->MoveNext();
}
m_RecordList.SortItems(0,TRUE);// sort the 1st column, ascending
m_AdoConn.ExitConnect();
}