VC+ADO

本文介绍了一个使用ActiveX Data Objects (ADO)进行数据库操作的类CAdoEx。该类提供了连接数据库、执行查询及SQL语句、关闭数据库等功能。通过这个类,开发者能够方便地在应用程序中集成数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*说明:--------------------------------------------*/

/* 注 stdafx.h 里要有下面两行 */

/* #include <comdef.h> */

/* #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF") */

/* AfxOleInit() ; ADO 初始在应用的主线程初始化时调用 */

/*说明:--------------------------------------------*/

/* 以下是类的成员说明 */

#ifndef _ADOEX_H_

#define _ADOEX_H_

#include "stdafx.h"

class CAdoEx

{

public:

CAdoEx();

virtual ~CAdoEx();

/*打开 Ado 数据库*/

BOOL OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD);

file://--------------------------------------------//

/* ADO 通用查询函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表查询,也可以对多个表查询 */

/* 返回一个纪录集 */

/* 如果成功返回一个非空的纪录集 */

/* 如果失败则返回一个NULL的纪录集 */

_RecordsetPtr Query(LPCTSTR lpQuery);

file://--------------------------------------------//

file://--------------------------------------------//

/*连接数据库 */

BOOL CloseAdo();

file://--------------------------------------------//

file://--------------------------------------------//

/* ADO 通用SQL语句执行函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表插入 修改 删除 操作 */

/* 如果成功返回真 */

/* 如果失败返回假 */

BOOL Execute(LPCTSTR lpExcute);

file://--------------------------------------------//

protected:

_RecordsetPtr retRecordsetPtr;

char lpBuff[500];

HRESULT hResult;

BOOL m_bOpen;

_ConnectionPtr m_pConnection;

};

#endif

/*------------------以下为实现文件-------------------------

/* 说明: 这是一个 Ado 类,可以实现用ADO对数据库操作 */

/* 1. 连接数据库 */

/* 2. 查询数据库的一个或关联表 */

/* 3. 执行SQL 语句插入 修改 删除 操作 */

/* 4. 关闭数据库 */

#include "stdafx.h"

#include "AdoEx.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

CAdoEx::CAdoEx()

{

m_bOpen = FALSE ;

/*初始化连接的实例*/

m_pConnection.CreateInstance(_uuidof(Connection)) ;

}

CAdoEx::~CAdoEx()

{

if(retRecordsetPtr !=NULL)

retRecordsetPtr->Close() ;

retRecordsetPtr = NULL ;

CloseAdo() ;

m_bOpen = FALSE ;

}

/*打开 Ado 数据库*/

BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )

{

BOOL bRet = FALSE ;

if(m_bOpen) return TRUE ;

try

{

hResult = m_pConnection->Open(lpDSN,lpUID,lpPWD,0) ;

if (SUCCEEDED(hResult))

{

TRACE0("Open ADO Database Succeeded !/n") ;

m_bOpen = TRUE ;

bRet = TRUE ;

}

else

{

m_bOpen = FALSE ;

bRet = FALSE ;

}

} /*end of try*/

catch(_com_error e )

{

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"打开数据库时发生异常 /n:%s",e.ErrorMessage());

AfxMessageBox(lpBuff) ;

}

return bRet ;

}

/* ADO 通用查询函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表查询,也可以对多个表查询 */

/* 返回一个纪录集 */

/* 如果成功返回一个非空的纪录集 */

/* 如果失败则返回一个NULL的纪录集 */

_RecordsetPtr CAdoEx::Query(LPCTSTR lpQuery)

{

retRecordsetPtr = NULL ;

_variant_t vRecsAffected ;

if(!m_bOpen) return NULL ;

try

{

retRecordsetPtr = m_pConnection->Execute(lpQuery,

&vRecsAffected,

adOptionUnspecified) ;

}

catch(_com_error e)

{

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"查询数据库表时发生异常 /n:%s",e.ErrorMessage());

AfxMessageBox(lpBuff) ;

}

return retRecordsetPtr ;

}

/* ADO 通用SQL语句执行函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表插入 修改 删除 操作 */

/* 如果成功返回真 */

/* 如果失败返回假 */

BOOL CAdoEx::Execute(LPCTSTR lpExcute)

{

BOOL bRet = FALSE ;

_variant_t vRecsAffected ;

if(!m_bOpen) return NULL ;

try

{

m_pConnection->Execute(lpExcute,

&vRecsAffected,

adOptionUnspecified) ;

bRet = TRUE ;

}

catch(_com_error e)

{

bRet = FALSE ;

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"更改数据库表时发生异常 /n:%s",e.ErrorMessage());
AfxMessageBox(lpBuff) ;

}

return bRet ;

}

BOOL CAdoEx::CloseAdo()

{

if (m_bOpen)

{

m_pConnection->Close() ;

TRACE0("Close ADO Connection !/n") ;

}

return TRUE ;

}

/* 说明: 这是一个 Ado 类,可以实现用ADO对数据库操作 */

/* 1. 连接数据库 */

/* 2. 查询数据库的一个或关联表 */

/* 3. 执行SQL 语句插入 修改 删除 操作 */

/* 4. 关闭数据库 */

#include "stdafx.h"

#include "AdoEx.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

CAdoEx::CAdoEx()

{

m_bOpen = FALSE ;

/*初始化连接的实例*/

m_pConnection.CreateInstance(_uuidof(Connection)) ;

}

CAdoEx::~CAdoEx()

{

if(retRecordsetPtr !=NULL)

retRecordsetPtr->Close() ;

retRecordsetPtr = NULL ;

CloseAdo() ;

m_bOpen = FALSE ;

}

/*打开 Ado 数据库*/

BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )

{

BOOL bRet = FALSE ;

if(m_bOpen) return TRUE ;

try

{

hResult = m_pConnection->Open(lpDSN,lpUID,lpPWD,0) ;

if (SUCCEEDED(hResult))

{

TRACE0("Open ADO Database Succeeded !/n") ;

m_bOpen = TRUE ;

bRet = TRUE ;

}

else

{

m_bOpen = FALSE ;

bRet = FALSE ;

}

} /*end of try*/

catch(_com_error e )

{

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"打开数据库时发生异常 /n:%s",e.ErrorMessage());

AfxMessageBox(lpBuff) ;

}

return bRet ;

}

/* ADO 通用查询函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表查询,也可以对多个表查询 */

/* 返回一个纪录集 */

/* 如果成功返回一个非空的纪录集 */

/* 如果失败则返回一个NULL的纪录集 */

_RecordsetPtr CAdoEx::Query(LPCTSTR lpQuery)

{

retRecordsetPtr = NULL ;

_variant_t vRecsAffected ;

if(!m_bOpen) return NULL ;

try

{

retRecordsetPtr = m_pConnection->Execute(lpQuery,

&vRecsAffected,

adOptionUnspecified) ;

}

catch(_com_error e)

{

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"查询数据库表时发生异常 /n:%s",e.ErrorMessage());

AfxMessageBox(lpBuff) ;

}

return retRecordsetPtr ;

}

/* ADO 通用SQL语句执行函数 */

/* 调用参数: 正确的SQL 查询语句. */

/* 可以对一个表插入 修改 删除 操作 */

/* 如果成功返回真 */

/* 如果失败返回假 */

BOOL CAdoEx::Execute(LPCTSTR lpExcute)

{

BOOL bRet = FALSE ;

_variant_t vRecsAffected ;

if(!m_bOpen) return NULL ;

try

{

m_pConnection->Execute(lpExcute,

&vRecsAffected,

adOptionUnspecified) ;

bRet = TRUE ;

}

catch(_com_error e)

{

bRet = FALSE ;

memset(lpBuff,0x00,500) ;

sprintf(lpBuff,"更改数据库表时发生异常 /n:%s",e.ErrorMessage());

AfxMessageBox(lpBuff) ;

}

return bRet ;
}

BOOL CAdoEx::CloseAdo()

{

if (m_bOpen)

{

m_pConnection->Close() ;

TRACE0("Close ADO Connection !/n") ;

}

return TRUE ;

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值