ADO封装类--ADOConn.h和ADOConn.cpp
(2012-11-30 21:51:03)
标签:
杂谈 |
分类: 编程 |
为了在操作数据库的方便,将对ADO相关的操作,进行了类封装!下面将其呈现给大家,通过了本人的测试:
//
//////////////////////////////////////////////////////////////////////
#import "c:\Program
Files\Common Files\System\ado\msado15.dll" no_namespace
rename("EOF","adoEOF") rename("BOF","adoBOF")
#if
!defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
#define
AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_
#if _MSC_VER
> 1000
#pragma
once
#endif // _MSC_VER
> 1000
class ADOConn
{
// 定义变量
public:
//添加一个指向Connection对象的指针:
_ConnectionPtr
m_pConnection;
//添加一个指向Recordset对象的指针:
_RecordsetPtr
m_pRecordset;
// 定义方法
public:
ADOConn();
virtual
~ADOConn();
//
初始化—连接数据库
void
OnInitADOConn();
// 执行查询
_RecordsetPtr& GetRecordSet(_bstr_t
bstrSQL);
// 执行SQL语句,Insert
Update _variant_t
BOOL
ExecuteSQL(_bstr_t bstrSQL);
void
ExitConnect();
};
#endif //
!defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
//
//////////////////////////////////////////////////////////////////////
#include
"stdafx.h"
#include
"ADOConn.h"
#ifdef
_DEBUG
#undef
THIS_FILE
static char
THIS_FILE[]=__FILE__;
#define new
DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//
Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
//
初始化—连接数据库
void
ADOConn::OnInitADOConn()
{
//
初始化OLE/COM库环境
//AfxOleInit();
::CoInitialize(NULL);
try
{
//
创建Connection对象
//m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection.CreateInstance(__uuidof(Connection));
//m_pConnection->Open("DSN=ADOmysql;Server=
localhost;Database=STUDENT","root","root",adModeUnknown);
m_pConnection->Open("Driver={MySQL ODBC 5.2w
Driver};Server=
localhost;Database=STUDENT","root","root",adModeUnknown);
}
// 捕捉异常
catch(_com_error
e)
{
//
显示错误信息
AfxMessageBox(e.Description());
}
}
// 执行查询
_RecordsetPtr&
ADOConn::GetRecordSet(_bstr_t
bstrSQL)
{
try
{
//
连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//
创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
//
取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error
e)
{
//
显示错误信息
AfxMessageBox(e.Description());
}
// 返回记录集
return
m_pRecordset;
}
// 执行SQL语句,Insert
Update _variant_t
BOOL
ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
//
_variant_t RecordsAffected;
try
{
//
是否已经连接数据库
if(m_pConnection ==
NULL)
OnInitADOConn();
//
Connection对象的Execute方法:(_bstr_t
CommandText,
// VARIANT *
RecordsAffected, long Options )
//
其中CommandText是命令字串,通常是SQL命令。
//
参数RecordsAffected是操作完成后所影响的行数,
//
参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
//
adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return
true;
}
catch(_com_error
e)
{
AfxMessageBox(e.Description());
return
false;
}
}
void
ADOConn::ExitConnect()
{
//
关闭记录集和连接
if (m_pRecordset !=
NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}
ADOConn.h
// ADOConn.h: interface for the ADOConn
class.
ADOConn.cpp
// ADOConn.cpp: implementation of the
ADOConn class.
后一篇:车载物联网技术探讨