sqlite3-API
DBMS:database management system,数据库管理系统 VDBE: virtual database engine,虚拟数据库引擎 VM: virtual machine,虚拟机 frontend:前端 bytecode programs:字节代码程序 ? 核心API 连接数据库 sqlite3_open() 执行预查寻
? 使用参数化SQL insert into foods (id,name) values (?,?); insert into episodes (id,name) values(:id,:name); 参数就是占位符,可在编译后提供绑定。 参数绑定的优点是无需重新编译,即可多次执行相同的语句。只需重置改语句、绑定新值,并重新执行。使用重置函数可以避免SQL编译的开销。完全避免此法分析、语法分析和代码生成开销。通过调用sqlite3_reset()实现重置。 另一个优点是SQLite会处理绑定到参数的转义字符。可避免语法错误和可能的SQL注入式攻击。 sqlite3_reset()只释放语句资源,会保持VDBE字节代码及其参数不变,sql语句无需再次调用prepare()即可再次执行。 ? 执行封装查询 两个非常实用的函数分装了准备查询过程。 sqlite3_exec(); ? 通常用于执行不返回数据的查询。如insert、update、delete。 sqlite3_get_table(); 通常用于执行返回数据的查询。可查询多个表,会返回完整的结果集。 get_table()的优点是一步就可执行查询并获得结果。缺点是它将结果完全存储在内存中。3.24版本中在推荐此函数,但是没说用哪个函数替代。 ? 错误处理 sqlite3_errcode() sqlite3_errmsg() sqlite3_errmsg16() sqlite3_errstr()
SQL语句格式化 sqlite3_mprintf() sqlite3支持printf()中大多数常见格式选项,以及其他一些非标准的格式(%q,%Q,%w,%w)。 例如%q,他会取代参数列表中以NULL结尾的字符串。同时他会将单引号字符转义,有助于防止SQL注入攻击。 ? 可操作的控制 API中包含可以监视、控制或限制数据库汇总发生什么的命令。SQLite以过滤或者回调函数方式实现该功能。 三种钩子函数:
?使用线程 共享缓存模式 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |