文章目录
- [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 使⽤
下⾯我们将这⼏个接⼝封装成⼀个类,快速上⼿这⼏个接口
- 创建/打开数据库文件
- 针对打开的数据库执行操作
- 表的操作
- 数据的操作
- 关闭数据库
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;
};