美文网首页
SQLite - 接口使用

SQLite - 接口使用

作者: Coc0 | 来源:发表于2020-01-09 19:47 被阅读0次

一、概要

本文简要介绍SQLite3C/C++接口,详细用法参考各节链接。

以下是SQLite重要的2种对象:

  • sqlite3:数据库链接对象,由sqlite3_open()创建,sqlite3_close()摧毁。

  • sqlite3_stmt:语句处理对象(prepared statement),由sqlite3_prepare()创建,sqlite3_finalize()摧毁。

以下是SQLite重要的8种对外方法:

  • sqlite3_open():连接数据库,构造sqlite3对象。

  • sqlite3_prepare():将执行查询和更新的SQL语句编译为bytecode,构造sqlite3_stmt对象。

  • sqlite3_bind():绑定变量到SQL语句中。

  • sqlite3_step():执行sqlite3_stmtbytecode

  • sqlite3_column():返回执行sqlite3_stmt语句后得到行的某列值。

  • sqlite3_finalize():析构sqlite3_stmt对象。

  • sqlite3_close():析构sqlite3对象 。

  • sqlite3_exec():包装后函数,会依次执行sqlite3_prepare()sqlite3_step()sqlite3_column()sqlite3_finalize()

二、对象

2.1.sqlite3 - Database Connection Handle

sqlite3结构体用于描述sqlite数据库文件,类似于文件句柄。

2.2.sqlite3_stmt - Prepared Statement Object

sqlite3_stmt结构体用于描述编译后SQL语句。

形如,gcc会将.c文件编译为.o文件(处理器可执行二进制码),sqlite前端会将SQL语句编译为sqlite3_stmt结构体(SQLite引擎可执行代码)。

sqlite3_stmt的生命周期如下:

  1. 使用sqlite3_prepre_v2()函数创建sqlite3_stmt结构体。

  2. 使用sqlite3_bind_*()函数绑定参数。

  3. 使用一次/多次sqlite3_step()函数执行SQL语句。

  4. 使用sqlite3_reset()函数重设sqlite3_stmt,回到步骤2

  5. 析构sqlite3_stmt结构体。

三、接口

3.1.sqlite3_open()

sqlite3_open()函数用于创建与数据库文件的连接并返回sqlite3结构体。

使用实例:

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c++" cid="n1027" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">sqlite3 *db = NULL;
int err = sqlite3_open(argv[1], &db);
if(SQLITE_OK != err) {
printf("error open sqlite database\n");
exit(1);
}</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c++" cid="n1032" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">const char* sql = "SELECT * FROM t WHERE y=?";
const char* ret = "";
sqlite3_stmt *stmt = NULL;
err = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, &ret);
if(SQLITE_OK != err) {
printf("error construct sqlite3_stmt\n");
exit(1);
}</pre>

sqlite3_bind()函数用于绑定SQL语句中的参数,替换SQL语句形如(NNN - 整数,VVV - 参数名):

3.3.sqlite3_bind()

使用实例:

该函数不实际执行SQL语句,仅编译SQL语句,为执行准备。

sqlite3_prepare()函数用于编译SQL语句为sqlite3_stmt结构体。

3.2.sqlite3_prepare()

相关文章

  • SQLite - 接口使用

    一、概要 本文简要介绍SQLite3的C/C++接口,详细用法参考各节链接。 以下是SQLite重要的2种对象: ...

  • SQLite体系架构

    SQLite采用模块设计,其架构图如下所示: 接口(Interface) 接口由SQLite C API组成,外部...

  • FMDB实现ORM

    IOS开发者们在使用coreData和sqlite原生接口的问题上争论不休,使用coreData无疑更方便,它也在...

  • sqlite3学习笔记

    c语言 API接口 打开数据库 sqlite3_open_v2() 、sqlite3_open() 、sqlite...

  • 5.1 SQLite的使用

    SQLite的使用 SQLite的使用.png

  • 8.2 SQLite的使用

    SQLite的使用 SQLite的使用.png

  • sqlite3常用sql语言总结

    一、sqlite3接口部分 与mysql的show命令一样,sqlite3也有自己的接口命令。接口命令不需要在结尾...

  • FMDB源码解析与使用

    介绍 FMDB是一个基于SQLite的数据库框架;使用OC语言对SQLite3的C语言接口做了一层面向对象的封装;...

  • iOS 开发之 SQLite 数据库使用

    iOS 常用 SQLite 数据库存储数据,工程中需要引入 sqlite3 库。SQLite 提供 C 接口以供调...

  • WCDB-SQLCipher

    SQLCipher基于SQLite,大多数API与SQLite 3的C / C ++接口相同。以PRAGMA,SQ...

网友评论

      本文标题:SQLite - 接口使用

      本文链接:https://www.haomeiwen.com/subject/xakuactx.html