项目-sqlite类的实现

项目-sqlite类的实现

代码如下:

C++ 复制代码
#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
}
相关推荐
缓慢更新9 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
yuniko-n10 小时前
【JUC】volatile 非原子性深入解析
java
sun_weitao11 小时前
极简版 MCP 工具实现方案
java·linux·服务器
金銀銅鐵12 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
布吉岛的石头12 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
大文说跨境13 小时前
防关联浏览器的指纹覆盖到什么程度:六类参数的实测与自检方法
java·指纹浏览器·tiktok运营
Carol063013 小时前
上肢及肩肘关节
java·服务器·数据库
yliucherish13 小时前
Log4Shell 复现实录:我读 OpenJDK 源码,发现两道防线的默认值竟然相反
java
维拉德13 小时前
Java新人第一次接打标需求:从抓包找接口到客户端展示
java
luobobo89613 小时前
支付回调验签连续失败三天,最后发现是网关的时间戳单位问题
java