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;
};
相关推荐
山峰哥13 分钟前
数据库工程与SQL优化实战指南‌
数据库·sql·oracle·深度优先·宽度优先
Quincy_Freak1 小时前
Python 轻量化数据存储实践:国产化环境下SQLite高效管理方案
数据库·sqlite·数据库管理·大数据分析·sqlitego
宠友信息3 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app
头茬韭菜3 小时前
3.9 成本预警 — 退出钩子、$5 阈值对话框与多通道成本通知
java·大数据·jvm·ai
并不喜欢吃鱼4 小时前
从零开始 C++----- 十五.一文吃透 C++ 异常:try-catch、栈展开、自定义异常、异常安全 noexcept 底层全剖析
java·开发语言·jvm
haluhalu.5 小时前
prompts.chat:02-anatomy-of-effective-prompt
jvm·prompt
—Miss. Z—5 小时前
计算机二级MySQL选择题考点Ⅱ
数据库·mysql·oracle
矜持的左手6 小时前
硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复
数据库·oracle
欢呼的太阳14 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
多巴胺梦想家1 天前
数据库恢复技术:当灾难来临
网络·数据库·oracle