嵌入式sqlite3库API的使用

本文介绍了如何通过编程方式操作SQLite数据库,包括使用`sqlite3_open`和`sqlite3_close`打开和关闭数据库,`sqlite3_exec`执行SQL语句,以及获取执行错误信息和查询结果的方法。
摘要由CSDN通过智能技术生成

还记得我们上期讲了什么吗,没错,我们上期讲到了sqlite的使用,通过对比sqlite3和MySQL进一步了解了sqlite的使用场景,然后我们也讲了如何通过在linux终端执行命令行的方式去操作数据库增,删,改,查。我想大家应该对其有了一定的了解,今天我们来了解如何通过代码的方式去实现它的,增,删,改,查。

*上期我们说过的在写代码前我们还需要sqlite代码,这里已上传我的远程仓库,大家克隆/下载即可。

1,打开和关闭数据库

首先,我们想去操作数据库,就必须去打开它,才能进行下一步操作,当我们结束之后,是不是应该,咋们直接看函数原型,以及其参数代表的含义。

*******************************打开数据库********************************
函数原型:int sqlite3_open(const char *filename, sqlite3 **ppDb);

参数1:·filename:数据库文件的名称或路径

参数2·ppDb:用于存储指向连接对象的指针的指针

返回值:打开数据库成功,返回 SQLITE_OK。

       打开数据库失败,返回一个非零的错误代码,可以通过调用 sqlite3_errmsg 函数获取错误消息。

*******************************关闭数据库*********************************

函数原型:int sqlite3_close(sqlite3* db);

参数:db:要关闭数据库的连接对象

返回值:关闭数据库连接成功,返回 SQLITE_OK。

       关闭数据库连接失败,返回一个非零的错误代码,可以通过调用 sqlite3_errmsg 函数获取错误消息

我想这样介绍大家应该没有问题了吧,如果有,那我们直接以代码为例吧。

这还拿不下你?

2,执行sql语句函数

*sqlite3_exec 是 SQLite3 C API 中用于执行 SQL 语句的函数。它可以执行任意的 SQL 命令,并且支持回调函数来处理查询结果。

int sqlite3_exec(sqlite3* db,
const char *sql, 
int (*callback)(void*, int, char**, char**),
void* data,
char **errmsg);

参数说明:

db:SQLite3 数据库连接对象指针。
sql:要执行的 SQL 语句,可以是查询、更新或其他操作。
callback:一个回调函数,用于处理查询结果。该回调函数会被传递查询结果的每一行数据。
data:传递给回调函数的额外数据指针。
errmsg:用于存储错误信息的指针,如果执行过程中出现错误,会将错误信息存储在这里。

返回值:

返回一个表示执行结果的整数值,通常是 SQLITE_OK(0)表示执行成功。

我们通过这个函数,以及上一期我们讲到的在linux终端执行的SQL命令行就已经可以实现其增,删,改,查了。

3,获取执行错误信息

*sqlite3_errmsg 是 SQLite3 C API 中的一个函数,用于获取与最近发生的数据库连接相关的错误消息。

const char *sqlite3_errmsg(sqlite3*);

参数说明:

db:SQLite3 数据库连接对象指针。

返回值:

返回一个指向常量字符串的指针,该字符串包含了与最近发生的数据库连接相关的错误消息。

4,获取查询结果

*sqlite3_get_table 是 SQLite3 C API 中用于执行查询并将结果存储在二维数组中的函数。

int sqlite3_get_table(
    sqlite3* db,        // 打开数据库的连接对象  
    const char *sql,    // 要执行的SQL查询语句   
    char ***resultp,    // 用于存储结果的二维数组 
    int *nrow,          // 存储结果行数的指针
    int *ncolumn,       // 存储结果列数的指针
    char **errmsg       // 用于存储错误信息的指针
);


参数说明:

db:SQLite3 数据库连接对象指针。
sql:要执行的 SQL 查询语句。
resultp:指向一个指针的指针,用于存储查询结果的二维数组。
nrow:一个指针,用于存储结果行数。
ncolumn:一个指针,用于存储结果列数。
errmsg:用于存储错误信息的指针。
返回值:

返回一个整数,表示执行结果,通常是 SQLITE_OK(0)表示执行成功。




而 sqlite3_free_table 则用于释放由 sqlite3_get_table 分配的内存空间。

void sqlite3_free_table(char **result);

result:指向结果数组的指针。

话不多说,我们直接。掀桌子跑路楼。

后续你们可以自己去体会一下。

当然,我们还有一个执行SQL的API

int sqlite3_prepare_v2(
  sqlite3 *db,            /* 数据库句柄 */
  const char *zSql,       /* SQL 查询语句 */
  int nByte,              /* 将要使用的字节数 */
  sqlite3_stmt **ppStmt,  /* 编译后生成的 SQL 程序句柄 */
  const char **pzTail     /* 未编译部分的 SQL 查询语句 */
);


db:SQLite 数据库连接对象指针。
zSql:要编译的 SQL 语句,以 UTF-8 编码。
nByte:SQL 语句的最大长度(以字节为单位),如果为 -1 则表示以零结尾的字符串。
ppStmt:传递一个指向 sqlite3_stmt* 类型指针的指针,用于接收编译后的语句对象。
pzTail:指向未使用的 SQL 语句部分的指针。
成功调用该函数将返回 SQLITE_OK,并且 ppStmt 指向一个准备好的语句对象,可以通过该对象执行 SQL 语句。记得在使用完毕后要调用 sqlite3_finalize 函数释放语句对象占用的资源。

上代码吧

本期的sqlite3的使用圆满结束喽。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值