#include"sqlLite.h"
#include"db_sqlite3.h"
#define MAX_SQL_LEN_512 512
#define SQLLITE_TXT_NAME_LEN 64
//获取一个可用连接
#define SQLLITE_FREE_CONN(PCONN)\
{\
m_lockMutex.lock();\
PCONN = GetFreeConn();\
if(NULL == PCONN)\
{\
m_lockMutex.Unlock(); \
return -1;\
}\
};
//打开数据库事务
#define SQLLITE_BEGIN_TRANCTION(PCONN)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->BeginTranction();\
};
//提交数据
#define SQLLITE_COMMIT(PCONN)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->Commit();\
m_lockMutex.Unlock();\
};
//数据回滚
#define SQLLITE_ROLLBACK(PCONN)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->Rollback();\
m_lockMutex.Unlock();\
};
//设置SQL
#define SQLLITE_PREPARE(PCONN,PSQL)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->Prepare(PSQL);\
};
//设置输入输出参数个数
#define SQLLITE_BIND_PARAM_NUM(PCONN,INPUTNUM,OUTPUTNUM)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->BindParamNum(INPUTNUM,OUTPUTNUM);\
};
//设置输入参数
#define SQLLITE_BIND_PARAM_IN(PCONN,PARAMPOST,PARAMTYPE,PARAMADDR,PARAMMAXLEN)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->BindParam(PARAMTYPE,PARAMPOST,(void*)PARAMADDR,PARAMMAXLEN,SQLLITE_DIRECT_PARAMETER_IN);\
};
//设置输出参数
#define SQLLITE_BIND_PARAM_OUT(PCONN,PARAMPOST,PARAMTYPE,PARAMADDR,PARAMMAXLEN)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
PCONN->BindParam(PARAMTYPE,PARAMPOST,(void*)&PARAMADDR,PARAMMAXLEN,SQLLITE_DIRECT_PARAMETER_OUT);\
};
//数据执行
#define SQLLITE_EXECUTE(PCONN,RET)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
RET = PCONN->Execute();\
};
//查询多条数据时执行数据单步
#define SQLLITE_FETCH_DATA(PCONN,RET)\
{\
if(NULL == PCONN)\
{\
return -1;\
}\
RET = PCONN->FetchData();\
};
#include<vector>
#include<string>
#include<mutex>
using namespace std;
typedef struct USER_INFO_S
{
string user_id;
string name;
int gender;
};
class CSqlConnection
{
public:
CSqlConnection();
virtual ~CSqlConnection();
int ConnectionDB(const char* pcFileName, int nMemberFlag = SQLLITE_UNUSED_MEMBER_DB);
int AttachDB(const char* pcFileName, const char* pcAliName);
int CloseDB();
int InitMemberDB();
CSqlite3* GeetFreeConn();
public:
int QueryValueDB(const char* pcSql, int& nValue);
int ExecuteSQL(const char* pcSQL);
int InsertUserListInfoToDB(vector<USER_INFO_S> vecUserListInfo);
int UpdateUserListInfoToDB(vector<USER_INFO_S> vecUsreListInfo);
int DeleteUserListInfoToDB(vector<USER_INFO_S> vecUserListInfo);
int QueryUserListInfoToDB(USER_INFO_S tUserInfo, vector<USER_INFO_S>& vecUserListInfo);
protected:
int ExecuteArraySql(string strArray[], int nCount);
int InitDropTable();
int InitCreateTable();
int InitCreateIndex();
int InitCreateTrigger();
int ExecuteSQLNoCommit(CSqlite3* pConn, const char* pcSql);
private:
CSqlite3* m_pSqliteDBHandle;
std::mutex m_lockMutex;
};
sqlite--使用数据库
最新推荐文章于 2024-07-25 21:03:55 发布