MFC连接SQL server技术ADO的使用

ADOConn.h头文件:

 

#pragma once

#import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADODB") rename("EOF","adoEOF") rename("BOF","adoBOF")

using namespace ADODB;

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();

};

 

 

 

ADOConn.cpp源文件代码:

 

 

// ADOConn.cpp: implementation of the ADOConn class.

//  通用连接数据库类

//

 

#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库环境 

  ::CoInitialize(NULL);

 

  try

  {  

    //CString strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=GARDE;Data Source=(local)";

    CString strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=GARDE;Data Source=HP-PC\\HZU";

    m_pConnection.CreateInstance(_uuidof(Connection));

    m_pConnection->Open(_bstr_t(strSQL),"","",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();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值