SQLite
+ -

SQLite 绑定用法

2019-09-09 15 0
SQLite教程以最新的SQLite版本version 3.33.0(2020-08-20)为基础,带你学习和了解最新的SQLite语法及使用。
本教程类含有大量的测试用例,都是本人亲测,简单好用,是你学习和参考的好帮手。
加入字节流官方QQ群:952873936或联系站长进行技术交流。

Sqlite和大多数的关系数据库一样,也支持 Sql语句的绑定(bind).
SQL语句使用绑定技术,可以减少Sql语句在执行过程中的动态解析次数,从而可以提高执行效率真。

Sqlite使用sqlite3_prepare函数来准备一个需要被绑定的sql语句,sql语句的中?代表绑定占位符,该规则在很多关系型数据库中都是一致的,因此这对于数据库移植操作还是比较方便
的。然后使用sqlite3bind类型函数来实现参数类型的绑定

例如有一个名叫cookie的表,其中有三个字段

rowid int   //整数
name  varchar(255) //字符串
encrypted_value blob //二进制流

则可以用下例实现sql 的update操作

sqlite3_stmt *stmt;
char* sql = "update cookies set encrypted_value =? ,name=? where rowid = 13743";
sqlite3_prepare(db, sql, strlen(sql), &stmt, 0);
{
    sqlite3_bind_blob(stmt, 1, in.pbData, in.cbData, NULL);
    sqlite3_bind_text(stmt, 2, "www.bytekits.com",strlen("www.bytekits.com"), NULL);
    sqlite3_step(stmt);
}

sqlite3_finalize(stmt);

sqlite3使用_stmt *pStmt语句增加值的,对于不同类型的参数要选用不同的函数。

可选的BIND函数如下表所示:

int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));

int sqlite3_bind_double(sqlite3_stmt*, int, double);

int sqlite3_bind_int(sqlite3_stmt*, int, int);

int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);

int sqlite3_bind_null(sqlite3_stmt*, int);

int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));

int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));

int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);

int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);

每个函数的详细用法:http://www.sqlite.org/c3ref/bind_blob.html


字节流是站长多年来的工作经验和技术总结,和站长一起学习,每天都有进步。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

0 篇笔记 写笔记

SQLite 绑定用法
Sqlite和大多数的关系数据库一样,也支持 Sql语句的绑定(bind).SQL语句使用绑定技术,可以减少Sql语句在执行过程中的动态解析次数,从而可以提高执行效率真。Sqlite使用sqlite3_prepare函数来准备一个需要被绑定的sql语句,sql语句的中?代表绑定占位符,该规则在很多关......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!