77 lines
1.9 KiB
C++
77 lines
1.9 KiB
C++
#pragma once
|
||
/*
|
||
*
|
||
* Sql封装类,避免多线程环境下,执行SQL查询加锁后没有释放锁,导致其他线程阻塞得不到执行。
|
||
* 使用方式:
|
||
CSqlHelper sqlHelper(&m_SQLConn)
|
||
sqlHelper.Exec(sQueryActorData, ...)
|
||
* CSqlHelper内部有个变量,记录执行查询或者数据库操作命令是否成功,如果成功,析构函数会自动
|
||
* 调用SQL::ResetQuery()。注意,因为每次执行查询成功,都会修改CSqlHelper类的m_bNeedReset
|
||
* 所以,如果要连续执行多个db查询命令,每个命令执行完毕都需要手动调用Reset。
|
||
* 例如:
|
||
* // 执行SQL命令1
|
||
* CSqlHelper sqlHelper(&m_SQLConn)
|
||
* sqlHelper.Exec(sDBCmd1);
|
||
* // 这里需要手动重置
|
||
* sqlHelper.Reset();
|
||
* // 执行SQL命令2
|
||
* sqlHelper.Query(sDBQuery2, ...);
|
||
* // 如果这是最后一条命令,不需要手动重置,析构函数会自动重置
|
||
*/
|
||
|
||
#include "_osdef.h"
|
||
#include "SQL.h"
|
||
|
||
class CSQLConenction;
|
||
class CSqlHelper
|
||
{
|
||
public:
|
||
CSqlHelper(CSQLConenction* conn);
|
||
~CSqlHelper();
|
||
/*
|
||
* Comments: 重置本次查询结果
|
||
* @Return void:
|
||
* @Remark:
|
||
*/
|
||
void Reset();
|
||
|
||
/*
|
||
* Comments: 执行SQL查询,不定长参数
|
||
* Param const char * sQueryFormat:
|
||
* Param ...:
|
||
* @Return int:
|
||
* @Remark:
|
||
*/
|
||
int Query(const char* sQueryFormat, ...);
|
||
|
||
/*
|
||
* Comments: 执行SQL查询,定长参数
|
||
* Param const char * sQueryText:
|
||
* Param const size_t nTextLen:
|
||
* @Return int:
|
||
* @Remark:
|
||
*/
|
||
int RealQuery(const char* sQueryText, const size_t nTextLen);
|
||
|
||
/*
|
||
* Comments: 执行SQL命令,不定长参数
|
||
* Param const char * sQueryFormat:
|
||
* Param ...:
|
||
* @Return int:
|
||
* @Remark:
|
||
*/
|
||
int Exec(const char* sQueryFormat, ...);
|
||
|
||
/*
|
||
* Comments: 执行SQL命令,定长参数
|
||
* Param const char * sExecText:
|
||
* Param const size_t nTextLen:
|
||
* @Return int:
|
||
* @Remark:
|
||
*/
|
||
int RealExec(const char* sExecText, const size_t nTextLen);
|
||
private:
|
||
CSQLConenction* m_pSQLConnection;
|
||
bool m_bNeedReset;
|
||
};
|