项目-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
}
相关推荐
郝学胜-神的一滴20 小时前
干货版《算法导论》 02 :算法效率核心解密
java·开发语言·数据结构·c++·python·算法
布吉岛的石头20 小时前
Java 岗,面试常问 100 题(精简版)
java·开发语言·面试
sinat_2554878120 小时前
收藏品·学习笔记
java·javascript·windows·学习·microsoft
一碗面42120 小时前
Spring AI 多模态能力全景
java·spring·spring ai
信徒_20 小时前
服务治理技术选型
java
枕星而眠20 小时前
C语言数组专题:从一维到二维,吃透内存与指针
java·数据结构·算法
Andya_net20 小时前
Spring | 深度剖析Spring Bean的生命周期:从加载到销毁的完整流程
java·spring·rpc
玛卡巴卡ldf20 小时前
【Springboot升级AI】(大模型部署)LangChain4j、会话记忆、隔离消失持久化问题、ollama、RAG知识库、Tools工具
java·开发语言·人工智能·spring boot·后端·springboot
Maiko Star20 小时前
Spring AI 多轮对话记忆(ChatMemory)保姆级教程:从内存版到 Redis 持久化
java·redis·spring