博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlite3-第五章 API-核心API
阅读量:7042 次
发布时间:2019-06-28

本文共 1371 字,大约阅读时间需要 4 分钟。

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以过滤或者回调函数方式实现该功能。

  三种钩子函数:

  • sqlite3_commit_hook():用于检视连接上的事务提交;
  • sqlite3_rollback_hook():用于检视回滚;
  • sqlite3_update_hook():用于来自insert、update、delete命令的更改操作;
  • sqlite3_wal_hook():预写日志(Write Ahead Log, WAL),后面介绍。
  • sqlite3_set_authorizer():编译时钩子,对数据库一切事件的细粒度控制,能限制对数据库、表、列的访问和修改。

 使用线程

  共享缓存模式

 

转载于:https://www.cnblogs.com/mofei004/p/9370892.html

你可能感兴趣的文章
mysql数据库迁移目录后slave报错
查看>>
Centos 7 学习之静态IP设置
查看>>
hbase内存规划(读多写少型和写多读少型)
查看>>
Web QQ 的请求交互过程
查看>>
去哪儿网——项目管理平台助力研发效率提升
查看>>
Jenkins实战演练之Linux节点任务配置
查看>>
安卓手机链接window服务器工具。安卓手机连接linux服务器工具
查看>>
应用反射技术为Infragistics Solution设计例子程序 代码简洁而且学习的效率高
查看>>
一个由C++到Java,再到Hadoop的学习历程
查看>>
JEEWX微信企业号管家,开源免费,1.0版本发布
查看>>
2018-1-10 Linux学习笔记
查看>>
echarts 去除网格
查看>>
UIScrollView、UIPageControl的练习
查看>>
使用SHA-1摘要算法和证书链签名的软件包将不再被接受
查看>>
JDBC的API详解之ResultSet
查看>>
第八章 路由器单臂路由配置
查看>>
SQLServer基本函数
查看>>
好系统教您WinXP系统桌面快捷方式打不开怎么办
查看>>
权限修改
查看>>
S16区块链沙龙:STO实战解析
查看>>