ADO 访问数据库是基于COM ,访问速度快、使用方便等特点。我在实际的工作当中发现可以把一些常用的方法构造成一个类,不妨叫她为 CAdoEx 类吧。下面分别是头文件、实现文件。要是有不妥之处请给我发邮件 luoshizhen@163.net
*说明:--------------------------------------------*/ /* 注 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 ; } &nbs [1] [2] 下一页 没有相关教程
|