📄 abstractdbdriver.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 + -