当前位置:C++技术网 > 资讯 > ADO数据库操作封装参考代码:1 连接数据库类

ADO数据库操作封装参考代码:1 连接数据库类

更新时间:2015-06-26 20:10:33浏览次数:1+次

头文件AdoConnection.h :

/*###################################
 【文件名】:  AdoConnection.h
 【名  称】:  ADO 封装类.
 【版  本】:  0.20
 【作  者】:  成真
 【E-mail】:  anyou@sina.com
  ---------------------------------------------------------
 【创建时间】:  20/1/2003 19:08
 【修改时间】:  09/4/2003
  ---------------------------------------------------------
 【版本历史】:
  [0.20]  :   封装了 CAdoCommand 类.
   [-15/4/2003-]
   
  [0.11]  :   修正了一些 bug.
     删除 oleinit() 函数, 因为觉得不妥。
     增加了记录集存取函数.
   [-09/4/2003-]

  [0.10] : 主要包括 CAdoConnection 和 CAdoRecordSet 两个类, 封装了
   对ado的常用的操作方法.
   [-20/1/2003-]
  ---------------------------------------------------------
 【使用说明】:
  1. 必须在下面指明 msado15.dll 的全路径, 一般在 "C:\Program Files Common Files\System\ADO\" 目录下.
  2. 在使用本类之前必须要初始化 COM 环境, 可以调用 CoInitialize(NULL)  
     来初始化, 用 CoUninitialize() 释放;
  3. 在使用记录集对象前必须先调用 CAdoConnection::Open() 连接数据库,
     连接后可给多个 CAdoRecordSet 对象使用, 用完后须关闭数据库.
  4. 使用记录集执行SQL语句之前, 要使用构建方法或调用 SetAdoConnection() 
     关联到连接对象.
  5. 在编译过程中不用理会下面的编译警告:
     warning: unary minus operator applied to unsigned type, result
     still unsigned
     如果不想此警告出现,可以在 StdAfx.h 文件中加入这样一行代码以禁止
     此警告:  #pragma warning(disable:4146) 
  ############*/
#if !defined(_ANYOU_COOL_ADO_H)
#define _ANYOU_COOL_ADO_H

#if _MSC_VER > 1000
#pragma once
#endif 
 
#include <icrsint.h>
class CAdoConnection;
#include "AdoRecordSet.h"
#include "AdoCommand.h"

// 数值类型转换 -----
COleDateTime vartodate(const _variant_t& var);
COleCurrency vartocy(const _variant_t& var);
bool vartobool(const _variant_t& var);
BYTE vartoby(const _variant_t& var);
short vartoi(const _variant_t& var);
long vartol(const _variant_t& var);
double vartof(const _variant_t& var);
CString vartostr(const _variant_t& var);

/*####
------------------------------------------------
 CAdoConnection class
------------------------------------------------
  #####*/
class CAdoConnection
{
// 构建/析构 ----
public:
 CAdoConnection();
 virtual ~CAdoConnection();

protected:
 void Release();

// 属性 ---
public:
 // 连接对象 ----
 _ConnectionPtr& GetConnection() {return m_pConnection;};

 // 异常信息 ----
 CString GetLastErrorText();
 ErrorsPtr GetErrors();
 ErrorPtr  GetError(long index);

 // 连接字串 -----
 CString GetConnectionText() {return m_strConnect;}

 // 连接信息 -----
 CString GetProviderName();
 CString GetVersion();
 CString GetDefaultDatabase();

 // 连接状态 -----
 BOOL IsOpen();
 long GetState();
 
 // 连接模式 ----
 ConnectModeEnum GetMode();
 BOOL SetMode(ConnectModeEnum mode);

 // 连接时间 -----
 long GetConnectTimeOut();
 BOOL SetConnectTimeOut(long lTime = 5);
 
 // 数据源信息 -----
 _RecordsetPtr OpenSchema(SchemaEnum QueryType);

// 操作 ------
public:
 // 数据库连接 -----
 BOOL Open(LPCTSTR lpszConnect =_T(""), long lOptions = adConnectUnspecified);
 BOOL ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, UINT uiPort = 1433,long lOptions = adConnectUnspecified);
 BOOL ConnectOracle(CString dbsrc, CString user, CString pass, UINT uiPort = 1433 ,long lOptions = adConnectUnspecified);
 BOOL ConnectAccess(CString dbpath, CString pass = _T(""), long lOptions = adConnectUnspecified);
 BOOL OpenUDLFile(LPCTSTR strFileName, long lOptions = adConnectUnspecified);
 void Close();

// 处理 ----
public:
 BYTE GetDBType();
 void UnLock();
 void Lock();
 // 事务处理 ----
 long BeginTrans();
 BOOL RollbackTrans();
 BOOL CommitTrans();

 // 执行 SQL 语句 -----
 _RecordsetPtr Execute(LPCTSTR strSQL, long lOptions = adCmdText);
 BOOL Cancel();

// 数据 ------
protected:
 CString m_strLogFile;
 CString m_strConnect;
 CString m_strErrMsg;
 long m_lOptions;
 _ConnectionPtr m_pConnection;
 BYTE   m_byDBType; // 数据库类型 0:SQL Server 1:Oracle
 CRITICAL_SECTION m_csConn;  //数据库连接临界区

};

#endif // !defined(_ANYOU_COOL_ADO_H)

    大家可以学习此代码,对ADO有个深入的了解。如果发现Bug,请自己修复,并反馈。