MySql数据库Linux下访问类

// 通用类
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;
	};
}



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值