项目-sqlite类的实现
项目-sqlite类的实现
代码如下:
#ifndef __M_HELPER_H__
#define __M_HELPER_H__
#include <iostream>
#include <string>
#include <vector>
#include <sqlite3.h>
#include "mq_logger.hpp"namespace xypmq
{
class SqliteHelper
{public:typedef int(*SqliteCallback)(void*,int ,char**,char**);SqliteHelper(const std::string &dbfile):_dbfile(dbfile),_handler(nullptr){}bool open(int safe_level=SQLITE_OPEN_FULLMUTEX){//int sqlite3_open_v2(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs );int ret=sqlite3_open_v2(_dbfile.c_str(),&_handler,SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | safe_level,nullptr);if(ret!=SQLITE_OK){ELOG("创建/打开sqlite数据库失败: %s", sqlite3_errmsg(_handler));return false;}return true;}bool exec(const std::string &sql,SqliteCallback cb,void *arg){//int sqlite3_exec(sqlite3*, char *sql, int (*callback)(void*,int,char**,char**), void* arg, char **err)int ret=sqlite3_exec(_handler,sql.c_str(),cb,arg,nullptr);if(ret!=SQLITE_OK){ELOG("%s \n语句执行失败: %s", sql.c_str(), sqlite3_errmsg(_handler));return false;}return true;}void close(){// int sqlite3_close_v2(sqlite3*)if(_handler) sqlite3_close_v2(_handler);}private:std::string _dbfile;sqlite3* _handler;
};
#endif
}