⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractdbdriver.h

📁 Oracle OCI 应用
💻 H
字号:
/**
 * AbstractDBDriver.h
 *
 * @author aizy
 * @date 2004-11-24
 */

#ifndef _DB_ABSTRACT_DB_DRIVER_H_
#define _DB_ABSTRACT_DB_DRIVER_H_

#include <string>
#include <map>
#include "IConnection.h"
#include "SqlException.h"

namespace db {

//驱动类型定义
enum DriverType {
	DRV_ODBC,	//ODBC驱动
	DRV_OCI,	//OCI驱动
	DRV_POOL,	//连接池驱动
	DRV_OCS		//Sybase Open Client驱动
};

typedef std::map<std::string, std::string> Properties;

/**
 * 数据库驱动抽象接口
 * 不同的数据库访问方式需要继承并实现该接口
 */
class AbstractDBDriver {
public:
	AbstractDBDriver();
	virtual ~AbstractDBDriver();

private:
	static Properties nullProperties;

public:
	/**
	 * 创建驱动
	 * 注意:该函数只负责创建AbstractDBDriver,不负责对其进行释放;
	 *       调用者需要在外部进行释放。
	 *
	 * @param drvType 驱动类型
	 * @return AbstractDBDriver 如果失败,返回NULL
	 */
	static AbstractDBDriver * CreateDBDriver(DriverType drvType);

	/**
	 * 创建驱动
	 * 注意:该函数只负责创建AbstractDBDriver,不负责对其进行释放;
	 *       调用者需要在外部进行释放。
	 *
	 * @param drvType 驱动类型
	 * @return AbstractDBDriver 如果失败,返回NULL
	 */
	static AbstractDBDriver * CreateDBDriver(const std::string & drvName);

	/**
	 * 初始化
	 *
	 * @param prop 初始化参数
	 * @return true 初始化成功
	 *         false 初始化失败
	 */
	virtual bool Init() {
		return Init("");
	}

	/**
	 * 初始化
	 *
	 * @param prop 初始化参数
	 * @return true 初始化成功
	 *         false 初始化失败
	 */
	virtual bool Init(const std::string &prop) = 0;

	/**
	 * 反初始化
	 */
	virtual void UnInit() = 0;

	/**
	 * Create Connection
	 * 注意:该函数只负责创建IConnection,不负责对其进行释放;
	 *       调用者需要在外部进行释放,调用IConnection的Close函数
	 *       进行释放。
	 *
	 * @param sid 数据源名
	 * @param uid 用户名
	 * @param pwd 密码
	 * @return IConnection
	 * @throw SqlException 如果发生错误,则抛出该异常
	 */
	virtual IConnection *GetConnection(const std::string &sid,
		const std::string &uid, const std::string &pwd){
		return GetConnection(sid, uid, pwd,"");
	};

	/**
	 * Create Connection
	 * 注意:该函数只负责创建IConnection,不负责对其进行释放;
	 *       调用者需要在外部进行释放,调用IConnection的Close函数
	 *       进行释放。
	 *
	 * @param sid 数据源名
	 * @param uid 用户名
	 * @param pwd 密码
	 * @param prop 创建连接时需要的相关参数
	 * @return IConnection
	 * @throw SqlException 如果发生错误,则抛出该异常
	 */
	virtual IConnection *GetConnection(const std::string &sid,
		const std::string &uid, const std::string &pwd, 
		const std::string &prop) = 0;

	/**
	 * 产生调用存储过程的sql语句
	 *
	 * @param procedureName 存储过程名
	 * @param paramCount 存储过程参数个数
	 */
	virtual std::string GenStoredProcedureSql(const std::string &procedureName,
		int paramCount) = 0;
};

}

#endif // _DB_ABSTRACT_DB_DRIVER_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -