一个功能强大用ADO访问数据库的类

原创 2001年10月26日 15:41:00

 

头文件定义

/*   说明:  这是一个 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 ;
   
  file://连接的实例
   m_pConnection.CreateInstance(_uuidof(Connection)) ;
}

CAdoEx::~CAdoEx()
{

  if(retRecordsetPtr !=NULL)
   retRecordsetPtr->Close() ;
  retRecordsetPtr = NULL ;

 CloseAdo() ;

  m_bOpen = FALSE ;
}
file://打开 Ado 数据库
BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )
{
 BOOL bRet = FALSE ;
   
 if(m_bOpen) return TRUE ;

 try
 {
    file://Connect Database
       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 ;
    }
 } file://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 查询语句.         */
/*     可以对一个表插入 修改 删除 操作       */
/*     如果成功返回真                        */
/*     如果失败返回假                        */
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 ;
}

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

file://AdoEx 实现

/*   说明:  这是一个 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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAdoEx::CAdoEx()
{
   m_bOpen = FALSE ;
  
   file://初始化连接的实例
   m_pConnection.CreateInstance(_uuidof(Connection)) ;
}

CAdoEx::~CAdoEx()
{

  if(retRecordsetPtr !=NULL)
   retRecordsetPtr->Close() ;
  retRecordsetPtr = NULL ;

  CloseAdo() ;

  m_bOpen = FALSE ;
}
file://打开 Ado 数据库
BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )
{
 BOOL bRet = FALSE ;
   
 if(m_bOpen) return TRUE ;

 try
 {
    file://Connect Database
       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 ;
    }
 } file://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 查询语句.         */
/*     可以对一个表插入 修改 删除 操作       */
/*     如果成功返回真                        */
/*     如果失败返回假                        */
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 ;
}

 

分享关于VC 使用ADO数据库使用的方法封装类

ADO访问数据库的
  • YinLeNan
  • YinLeNan
  • 2014年07月27日 14:43
  • 677

VC用ADO访问数据库

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。  正文  一、ADO概述  ADO是Microsoft为最新和最强大的数据访问...
  • worldy
  • worldy
  • 2013年09月21日 11:18
  • 4618

ADO数据库连接语句(大全?)

数据库连接查询手册 下面将简单介绍一下几种ADO连接方式:ODBC DSN,ODBC DSN-Less,  OLE DB Provider 和 MS Remote ProviderI.DSNoConn...
  • roger_77
  • roger_77
  • 2006年03月14日 23:26
  • 3043

ADO方式连接数据库

ADO方式连接数据库分为如下步骤: 1.ADO对象的导入 在使用ADO技术时需要导入一个ADO动态链接库msado15.dll。该动态库位于系统盘下的"Program Files\Common Fil...
  • hola_f
  • hola_f
  • 2016年08月03日 16:32
  • 3070

VC++ ADO方式访问数据库简要笔记

最近从电脑中翻出以前上课时所写的ADO方式访问数据库练习,因此也对其作个简单的笔记。呵呵,钻研的不是很深,高手轻拍~ 不过对初学者和做课程设计要使用VC++访问数据库的同学还是有所帮助的。 首先来回顾...
  • MoreWindows
  • MoreWindows
  • 2012年12月23日 16:21
  • 12904

Windows下C++访问数据库(ADO)

C++利用ADO访问数据库还是比较方便的,我参考网上其它资料把ADO到一个类中,这样调用起来会更加的方便 这个类单线程访问数据库没有问题,提供了查询、增加、删除和修改的接口。 并行访问的话会有...
  • luke2834
  • luke2834
  • 2015年08月19日 12:07
  • 1978

MFC中利用ADO对数据库进行简单操作的实例

目标:实现对数据库中的数据进行简单地操作,包括增、删、改、查。 第一步,创建一个基于对话框的应用程序,命名为TestAdo 第二步,按照图1的界面布局添加控件...
  • shufac
  • shufac
  • 2014年04月16日 22:37
  • 3906

VC++下ADO数据库操作的封装类

一、ADO 对象 对象 说明 Command Command 对象定义了将对数据源执行的指定命令。 Connection ...
  • woshibendangao
  • woshibendangao
  • 2014年01月20日 11:50
  • 1394

VC中使用ADO访问数据库技术程序实现方法

 一,数据库访问技术目前数据库接口问技术主要有DAO,RDO,ODBC,OLE DB和ADOODBC,开发数据库互连。为数据库开发提供统一的接口,可以与任何具有ODBC驱动程序的数据库通信。和其他数据...
  • liwei__1987
  • liwei__1987
  • 2011年05月16日 11:48
  • 1876

以ado方式链接sqlserver数据库和access数据库 语言:c++

关于基本介绍转自:ADO接口之_ConnectionPtr点击打开链接 ADO中最重要的对象有三个:Connection、Recordset和Command,分别表示连接对象、记录集对象和命令对象。...
  • zhengudaoer
  • zhengudaoer
  • 2017年06月19日 10:18
  • 506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个功能强大用ADO访问数据库的类
举报原因:
原因补充:

(最多只允许输入30个字)