VC++中建立ADO操作类

来源:互联网 发布:无锡淘宝摄影 编辑:程序博客网 时间:2024/06/06 05:10

以通过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();
}

原创粉丝点击