C++封装ADO数据库连接,并附上DLL源码和测试程序

为简化ADO数据库操作并提高开发效率,本博客介绍了一个自定义的DLL库,该库封装了常用的数据库连接和操作功能,并提供了示例代码及下载链接。

因工作需要,一些项目中频繁的用到ADO连接数据库,每次都要写一些初始化过程,或者copy过来大篇代码。

“一份好的代码,一用好多年,封装成动态库,一直带身边”,为了提高工作效率或者说为了偷懒,就封装出这么一个dll,

是VS2008的工程,导出类时有遇到问题,加上下列代码可以解决。

//解决导出动态库报错问题!
#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
#pragma warning(default:4146)
using namespace ADODB;

 

现附上头文件代码:

// ADOProcedureMgr.h: interface for the CADOProcedureMgr class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ADOPROCEDUREMGR_H__1041F622_10FB_4670_973E_3138656DF70F__INCLUDED_)
#define AFX_ADOPROCEDUREMGR_H__1041F622_10FB_4670_973E_3138656DF70F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>

//解决导出动态库报错问题!
#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
#pragma warning(default:4146)
using namespace ADODB;

class  _declspec(dllexport) CDataBase{
	typedef _bstr_t BSTR_T;
public:
	//数据库类型
	typedef enum{ODBC = 0,SQLServer, ACCESS97,ACCESS2000,
		ACCESSXP,ACCESS_XL,INVALID}DRIVER_TYPE;
public:
	CDataBase(){
		m_lTimeout = 5;
	}
	CDataBase(const CDataBase& src){
		Copy(src);
	}
	CDataBase operator = (const CDataBase& src)
	{
		Copy(src);
		return *this;
	}
private:
	void Copy(const CDataBase& src){
		m_lTimeout = src.m_lTimeout;
		m_drvType = src.m_drvType;
		m_strServerName = src.m_strServerName;
		m_strUserName = src.m_strUserName;
		m_strPassword = src.m_strPassword;
		m_strDataBase = src.m_strDataBase;
	}
public:
	DRIVER_TYPE m_drvType;			//连接数据库类型
	LONG m_lTimeout;				//连接超时
	BSTR_T m_strServerName;			//服务器地址或名称,如local
	BSTR_T m_strUserName;			//用户名
	BSTR_T m_strPassword;			//密码
	BSTR_T m_strDataBase;			//数据库名称
};

class _declspec(dllexport) CADOProcedureMgr  
{
	typedef _bstr_t BSTR_T;
public:
	CADOProcedureMgr();
	virtual ~CADOProcedureMgr();
public:
	//数据库参数  如果在连接状态是否关闭
	BOOL Connect(const CDataBase& database,BOOL bCloseIfLive = FALSE);
	void Disconnect();			//断开数据库连接,无需手动调用,析构时自动调用
	BOOL IsActive() const;		//返回当前是否处于连接状态

	//处理数据存储过程
	BOOL CallDBProcedure(const _bstr_t& strProcName,const std::vector<_variant_t>& vInParamsName,
		const std::vector<_variant_t>& vInParams,std::vector<_variant_t>& vOutParams,size_t szOutParams,_RecordsetPtr& rsResult);
	BOOL Execute(const _bstr_t& strSQLCmd);		//执行sql语句命令
public:
	_ConnectionPtr m_ptrConnection;		//智能指针,连接数据库
	_CommandPtr m_ptrCommand;			//智能指针,执行数据库命令
	_RecordsetPtr m_ptrRecordset;		//智能指针,保存sql语句执行结果
	CDataBase m_database;				//此数据成员用于接收参数传递
};

#endif // !defined(AFX_ADOPROCEDUREMGR_H__1041F622_10FB_4670_973E_3138656DF70F__INCLUDED_)


 

DLL和测试DEMO下载链接:http://download.youkuaiyun.com/detail/shortcoder/7587935

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值