// 通用类
namespace Common
{
class CString;
// 数据库连接类
class CMySqlHelper
{
public:
CMySqlHelper();
virtual ~CMySqlHelper();
friend class CMySqlQuery;
public:
// 实例化数据库连接类
static CMySqlHelper& Instance();
public:
// 设置数据库连接信息
void SetDbInfo(const std::string& strDb, const std::string& strHost, const std::string& strUser,
const std::string& strPwd, unsigned int nPort = 3306);
// 连接数据库
bool Connect();
// 检测连接
bool CheckConnect();
// 关闭数据库连接
void Close();
// 开始事务
void StartTransaction();
// 提交事务
void Commit();
// 回滚事务
void Rollback();
// 获取最后错误码
unsigned int GetLastErrno();
// 获取最后错误信息
std::string GetLastError();
private:
// 执行SQL语句
void Execute(const std::string& strSql);
private:
// 连接状态
bool m_bConnect;
// 端口
unsigned int m_nPort;
// 主机
std::string m_strHost;
// 用户名
std::string m_strUser;
// 密码
std::string m_strPwd;
// 数据库
std::string m_strDb;
// 连接实例
MYSQL m_mySql;
};
// 数据库查询类
class CMySqlQuery
{
public:
CMySqlQuery(CMySqlHelper* const pCon);
~CMySqlQuery();
typedef long row_size_t;
public:
// 设置SQL语句
void SetSql(const std::string& strSql);
// 参数化查询
void Parse();
// 执行SQL语句(执行)
bool Execute();
// 执行SQL语句(查询)
row_size_t ExecuteQuery();
// 执行SQL语句(更新)
row_size_t ExecuteUpdate();
// 下一条查询结果
bool Next();
// 关闭查询结果
void Close();
// 获取结果集行数
row_size_t GetRowCount();
// 获取影响行数
row_size_t GetAffectedRows();
// 获取SQL
std::string GetSql();
// 获取字段信息
MYSQL_FIELD* GetFieldInfo(unsigned int nPos);
public:
// 根据参数位置设置参数值
CMySqlQuery& SetParam(unsigned int nPos, const Common::CString& strVal);
// 根据参数名称设置参数值
CMySqlQuery& SetParam(const std::string& strName, const Common::CString& strVal);
// 根据字段位置获取字段值
Common::CString GetValue(unsigned int nPos);
// 根据字段名称获取字段值
Common::CString GetValue(const std::string& strName);
private:
// 根据列名获取位置
int GetPosByName(const std::string& strName);
// 解析参数信息
bool DealParam(std::string& strSql, const std::string& strName, const std::string& strVal);
private:
// 连接实例地址
MYSQL* m_pMySql;
// 查询的SQL语句
std::string m_strSql;
// 查询的结果集
MYSQL_RES* m_pMysqlRes;
// 当前行集信息
MYSQL_ROW m_mySqlRow;
};
}
MySql数据库Linux下访问类
最新推荐文章于 2024-03-20 18:55:12 发布