SQLite 绑定用法
2019-09-09
15
0
SQLite教程以最新的SQLite版本version 3.33.0(2020-08-20)为基础,带你学习和了解最新的SQLite语法及使用。本教程类含有大量的测试用例,都是本人亲测,简单好用,是你学习和参考的好帮手。
加入字节流官方QQ群:952873936或联系站长进行技术交流。
加入字节流官方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
字节流是站长多年来的工作经验和技术总结,和站长一起学习,每天都有进步。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。