/** * @brief 数据库连接类 * @version V 1.0.0 * @author 王益俊 * @date 创建时间: 2018-04-17\n * @note 2018-04-17 创建类。\n * @warning * @bug */ #pragma once #include #include #include "CDBResultSet.h" #include "CDBCommon.h" namespace YADB { class CDBConnect { private: MYSQL * __pConn;//数据库连接 CDBResultSet __RessultSet;//结果集 bool __IsTemp;//是否是临时的(如果是临时使用的,归还到连接池中时会自动删除,以保持总体连接数不变) MYSQL_STMT *__pstmt;//预处理 public: CDBConnect( bool IsTemp = false ); ~CDBConnect(); /** * @brief 连接数据库函数。 * @param [in] const _DB_POOL_SETTING_& Setting 数据库连接设置\n * @param [out] std::string& Error 错误信息\n * @return 返回连接数据库是否成功 * @return true 成功\n * @return false 失败\n * @note * @warning * @bug */ bool Connect( const _DB_CONN_SETTING_& DBSetting, std::string& Error ); /** * @brief 关闭连接函数。 * @param 无\n * @return 无\n * @note * @warning * @bug */ void Close(); /** * @brief 测试连接函数。 * @param [out] std::string& Error 错误信息\n * @return 返回测试连接是否成功 * @return 0 连接测试成功\n * @return !=0 连接测试失败\n * @note * @warning * @bug */ int ConnctionTest( std::string& Error ); /** * @brief 设置自动提交的函数。 * @param [in] bool Mode 是否是否自动提交\n * @param [out] std::string& Error 错误信息\n * @return 返回设置自动提交是否成功 * @return 0 成功\n * @return !=0 失败\n * @note * @warning * @bug */ int AutoCommit( bool Mode, std::string& Error ); /** * @brief 提交函数。 * @param [out] std::string& Error 错误信息\n * @return 返回提交是否成功 * @return 0 成功\n * @return !=0 失败\n * @note * @warning * @bug */ int Commit( std::string& Error ); /** * @brief 回滚函数。 * @param [out] std::string& Error 错误信息\n * @return 返回回滚是否成功 * @return 0 成功\n * @return !=0 失败\n * @note * @warning * @bug */ int RollBack( std::string& Error ); /** * @brief 执行SQL语句返回结果集函数。 * @param [in] const char *szSql SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回结果集 * @return 0 失败\n * @return !=0 成功\n * @note * @warning * @bug */ CDBResultSet* ExecuteQuery( const char *szSql, std::string& Error ); /** * @brief 执行SQL语句返回mysql原始结果集函数。 * @param [in] const char *szSql SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回的mysql原始结果集 * @return ==0 失败\n * @return !=0 成功\n * @note * @warning * @bug */ MYSQL_RES* Query( const char *szSql, std::string& Error ); /** * @brief 执行SQL语句函数。 * @param [in] const char *szSql SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回影响到的记录数量 * @return -1 失败\n * @return >=0 成功\n * @note * @warning * @bug */ my_ulonglong ExecuteSql( const char *szSql, std::string& Error ); /** * @brief 执行SQL语句函数。 * @param [in] const char *szSql SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回影响到的记录数量 * @return -1 失败\n * @return >=0 成功\n * @note * @warning * @bug */ my_ulonglong ExecuteRealSql( const char *szSql, std::string& Error ); /** * @brief 获得最后一次错误信息函数。 * @param 无\n * @return 返回最后一次错误 * @note * @warning * @bug */ const char* GetLastError(); /** * @brief 获得最后一次插入的ID函数。 * @param [out] std::string& Error 错误信息\n * @return 返回最后一次插入的ID * @return -1 失败\n * @return >=0 成功\n * @note * @warning * @bug */ my_ulonglong GetLastInsertID( std::string& Error ); /** * @brief 获得是否是临时的连接函数。 * @param 无\n * @return 返回是否是临时的 * @note * @warning * @bug */ bool IsTemp(); /** * @brief 准备stmt函数。 * @param const char *szSql 预处理SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回准备stmt是否成功 * @return false 失败\n * @return true 成功\n * @note * @warning * @bug */ bool Preparestmt( const char *szSql, std::string& Error ); /** * @brief 执行stmt函数。 * @param [in] MYSQL_BIND *stBinds 要执行的BIND\n * @param [in] uint64_t *piId 执行后获得的ID\n * @param [out] std::string& Error 错误信息\n * @return 返回执行stmt成功还是失败 * @return false 失败\n * @return true 成功\n * @note * @warning * @bug */ bool stmtExcute( MYSQL_BIND *stBinds, uint64_t *piId, std::string& Error ); /** * @brief 关闭stmt函数。 * @param 无\n * @return 无\n * @note * @warning * @bug */ void stmtClose(); /** * @brief 执行SQL语句并获得自动生成的ID函数。 * @param [in] const char *szSql SQL语句\n * @param [out] std::string& Error 错误信息\n * @return 返回自动生成的ID * @return <1 失败\n * @return >=1 成功\n * @note * @warning * @bug */ my_ulonglong ExecuteSqlID( const char *szSql, std::string& Error ); }; }