SQLite3

文章目录

  • [SQLite3 C/C++API介绍](#SQLite3 C/C++API介绍)
  • [SQLite3 C/C++ API 使⽤](#SQLite3 C/C++ API 使⽤)

SQLite3 C/C++API介绍

C/C++ API是SQLite3数据库的⼀个客⼾端,提供⼀种⽤C/C++操作数据库的⽅法。

SQLite3 C/C++ API 使⽤

下⾯我们将这⼏个接⼝封装成⼀个类,快速上⼿这⼏个接口

  1. 创建/打开数据库文件
  2. 针对打开的数据库执行操作
    1. 表的操作
    2. 数据的操作
  3. 关闭数据库
cpp 复制代码
#include <iostream>
#include <string>
#include <sqlite3.h>
using namespace std;

class SqliteHelper 
{
public:
    typedef int(*SqliteCallback)(void*,int,char**,char**); //回调函数指针
    SqliteHelper(const string &dbfile) : _dbfile(dbfile), _handler(nullptr){}
    
    bool open(int safe_leve = 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_leve, nullptr);
        if (ret != SQLITE_OK) {
            cout << "创建/打开sqlite数据库失败: ";
            cout << sqlite3_errmsg(_handler) << endl;
            return false;
        }
        return true;
    }

    bool exec(const string &sql, SqliteCallback cb, void *arg) //arg是cb回调函数的参数
    {
        //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) 
        {
            cout << sql << endl;
            cout << "执行语句失败: ";
            cout << sqlite3_errmsg(_handler) << endl;
            return false;
        }
        return true;
    }
    void close() 
    {
        //int sqlite3_close_v2(sqlite3*);
        if (_handler) sqlite3_close_v2(_handler);
    }
private:
    string _dbfile;
    sqlite3 *_handler;
};
相关推荐
风哥2号2 小时前
数据库教程FGMT13‑Oracle性能优化之数据仓库与分区表
数据库·oracle·性能优化
程序员清风3 小时前
FastAPI 入门:用 Python 快速开发现代后端服务
python·oracle·fastapi
Zenova EdgeOS3 小时前
工业网关数据持久化:从同步到 WAL 的工程实战
网络·数据库·oracle
oradh6 小时前
Oracle UNDO 数据文件丢失处理(案例一)
数据库·oracle
El Shaddai.plus6 小时前
达梦数据库的执行计划操作符介绍
数据库·oracle
瀚高PG实验室9 小时前
瀚高数据库V9.0.5数据脱敏完整配置步骤
jvm·数据库·postgresql·瀚高数据库
写后端的胖头鱼9 小时前
【高频面试题】SQL 查询慢怎么排查
数据库·sql·mysql·oracle·慢查询·高频面试题
风哥2号9 小时前
数据库教程FGMT20‑Oracle容灾体系架构与数据库升级迁移方案
数据库·oracle·架构
阿里云基础软件9 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·人工智能·操作系统·sysom 诊断 skill
风哥2号10 小时前
数据库教程FGMT19‑Oracle多租户容器架构与新特性总结
数据库·oracle·架构