切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
Sqlite
SQLite备忘
SQLite备忘
2020-07-01
Sqlite
前端之家
前端之家
收集整理的这篇文章主要介绍了
SQLite备忘
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql
ite 是一款开源嵌入式
文件
型
数据库
,这个主要是和其他一些C/S架构的关系型
数据库
比较而来的,比如
MysqL
等. 说他是嵌入式,因为
sql
ite的所有
功能
全部包装在一个dll中,我们只需要使用其中的导出接口就可以操作
sql
ite
数据库
,这样使得数据存储
功能
能够很方便的集成进
用户
的程序中,并运行在客户程序的进程空间中 说他是
文件
型,因为
sql
ite的
数据库
文件
就是一个独立
文件
(
sql
ite本身不限制
数据库
文件
的扩展名),再没有其他的了,数据,表结构,
查询
,视图等等都保存在这个
数据库
文件
中,不会依赖任何
数据库
环境
sql
ite的主要特点: 1.无需部署,0配置,无服务端 2.跨平台 2.数据
文件
管理方便 3.较完善的
sql
92标准
支持
,
sql
ite基本实现了
sql
92标准,其他的一些不兼容的地方,可以参看官方相关说明,
链接
:http://www.
sql
ite.org/omitted.html 4.
sql
语句执行速度快,具体的对比数据,网上的评测有很多,这里就不多说了 5.应用较广.最著名的集成应该数Android了吧,其他的
PHP
,Python等都做了集成,所以还是很不错的 6.完美的Unicode编码
支持
.
sql
ite的接口中,凡是涉及字符串的都是用UTF8或UTF16编码交互,有的同时提供这两种编码的接口
函数
,所以多语种
支持
绝对不是问题(这也是我偏爱
sql
ite的很重要的原因,呵呵).
sql
ite的
数据库
操作其实和常规的
数据库
操作流程是一样的: 1.连接
数据库
. 2.构造
sql
语句并执行 3.对于SELECT语句,可以
获取
查询
结果 4.
数据库
使用完毕之后,
关闭
数据库
这里说明一下,下面所介绍的
函数
不会涵盖所有的API
函数
,毕竟
sql
ite针对同一个
功能
点提供了不同的API
函数
,主要表现在参数和配置
功能
上,有需要深入了解的朋友可以参考官方的文档. 1.打开
数据库
: API
函数
: int
sql
ite3_open( const char *filename,/*
数据库
文件
路径(UTF-8编码) */
sql
ite3 **ppDb /*
输出
:
sql
ite
数据库
句柄 */ ); int
sql
ite3_open16( const void *filename,/*
数据库
文件
路径(UTF-16) */
sql
ite3 **ppDb /*
输出
:
sql
ite
数据库
句柄 */ ); 如果
调用
成功会返回
sql
ITE_OK,否则返回
错误
码. 2.构造
sql
语句,这里就不多说了,这和
sql
ite本身无关,可以根据需要使用适当的
方法
构造即可,注意传给
sql
ite
函数
的时候,字符串编码要记得转换为UTF8/UTF16 3.执行
sql
语句. 在
sql
ite中执行
sql
语句比较简单的
方法
是
调用
函数
: int
sql
ite3_exec(
sql
ite3*,/* 打开的
数据库
句柄 */ const char *
sql
,/* UTF8编码的
sql
语句 */ int (*callback)(void*,int,char**,char**),/* 回调
函数
,对于SELECT语句返回的结果处理在回调
函数
中进行 */ void *,/* 传递给回调
函数
的参数 */ char **errmsg /* 相关
错误
信息 */ ); 其实
sql
ite3_exec只是封装了
sql
ite3_prepare,sqite3_step(即
sql
中的预编译技术)的,主要目的是为使用者提供方便,笔者个人觉得使用后者会更加好一点,这里先做一下总结: int
sql
ite3_prepare(
sql
ite3 *db,/* 打开的
数据库
句柄 */ const char *z
sql
,/* UTF8编码的
sql
语句,可以参数化 */ int nByte,/*
sql
语句的字节长度,可以传递-1,即字符串以\0结尾 */
sql
ite3_stmt **ppStmt,/*
输出
:预编译之后的
sql
语句句柄 */ const char **pzTail /*
输出
: 指向z
sql
缓冲区中跳过有效
sql
字符串的第一个字节 */ ); int
sql
ite3_prepare_v2(
sql
ite3 *db,即字符串以宽字符\0结尾 */
sql
ite3_stmt **ppStmt,/*
输出
: 预编译之后的
sql
语句句柄 */ const char **pzTail /*
输出
: 指向z
sql
缓冲区中跳过有效
sql
字符串的第一个字节 */ ); int
sql
ite3_prepare16(
sql
ite3 *db,/* 打开的
数据库
句柄 */ const void *z
sql
,/* UTF16编码的
sql
语句,/*
输出
: 预编译之后的
sql
语句句柄 */ const void **pzTail /*
输出
: 指向z
sql
缓冲区中跳过有效
sql
字符串的第一个字节 */ ); int
sql
ite3_prepare16_v2(
sql
ite3 *db,/*
输出
: 预编译之后的
sql
语句句柄 */ const void **pzTail /*
输出
: 指向z
sql
缓冲区中跳过有效
sql
字符串的第一个字节 */ ); 其中带参数的
sql
语句可以这样定义参数: ? ?NNN :VVV @VVV $VVV 参数编号从1开始,例如:INSERT into db values(?1,?2) v2版本
函数
时
sql
ite根据需要
添加
的增强
函数
,新的程序推荐使用v2版本
函数
,只需与原来
函数
的区别,可以参考官方原文 int
sql
ite3_step(
sql
ite3_stmt*); 执行一次预编译
sql
语句,在这之前,如果
sql
是参数化的,可以
调用
sql
ite3_bind来绑定数据,string,blob等等 如果执行成功会返回
sql
ITE_DONE,如果
查询
有结果会返回
sql
ITE_ROW,并可以通过API
获取
结果中的第一行数据,需要
获取
下一行数据可以再次
调用
sql
ite3_step直到返回
sql
ITE_DONE表示后面没有数据了 如果需要重新对预编译的
sql
绑定数据并执行,需要先reset一下,然后再
调用
step,即
函数
: int
sql
ite3_reset(
sql
ite3_stmt *pStmt); 下面是绑定数据到预编译
sql
语句的相关
函数
: 以下
函数
的第一个参数指代预编译的
sql
句柄,第二个参数指代绑定的参数编号,对应于参数化的
sql
语句中的参数编号: int
sql
ite3_bind_blob(
sql
ite3_stmt*,const void*,int n,void(*)(void*)); 该
函数
用于绑定二进制数据BLOB,其中最后一个参数是一个回调
函数
,当成功绑定数据后,会被
调用
,一般用于
自动
释放对应的缓冲区 int
sql
ite3_bind_double(
sql
ite3_stmt*,double); 该
函数
绑定double浮点数 int
sql
ite3_bind_int(
sql
ite3_stmt*,int); 该
函数
绑定int整数 int
sql
ite3_bind_int64(
sql
ite3_stmt*,
sql
ite3_int64); 该
函数
用于绑定具有64位长度的整数,对应于C中的long long结构,由于一个int的范围可能无法满足超大数据量的要求,所以
sql
ite也
支持
64位整数,毕竟
sql
ite官方声称
sql
ite是
支持
最大2T的数据的 int
sql
ite3_bind_null(
sql
ite3_stmt*,int); 该
函数
绑定一个空数据到指定列 int
sql
ite3_bind_text(
sql
ite3_stmt*,const char*,void(*)(void*)); 该
函数
绑定一段字符串,源字符串是UTF8编码的 int
sql
ite3_bind_text16(
sql
ite3_stmt*,源字符串是UTF16编码的 int
sql
ite3_bind_value(
sql
ite3_stmt*,const
sql
ite3_value*); 该
函数
绑定以
sql
ite结构
sql
ite3_value存储的通用数据,其中
sql
ite3_value可以是上述的所有类型,此
函数
不太常用 int
sql
ite3_bind_zeroblob(
sql
ite3_stmt*,int n); 该
函数
绑定指定大小的全零BLOB数据 3.
获取
SQL查询
结果 对于SELECT语句,还需要能够
获取
结果.上面也提到
调用
sql
ite3_step之后,对于有结果的
查询
会返回第一行结果,这时可以通过API
函数
获取
当前行的指定字段结果: const void *
sql
ite3_column_blob(
sql
ite3_stmt*,int iCol); 该
函数
以BLOB数据格式
获取
对应列的数据,BOLB长度使用
sql
ite3_column_bytes
获取
int
sql
ite3_column_bytes(
sql
ite3_stmt*,int iCol); int
sql
ite3_column_bytes16(
sql
ite3_stmt*,int iCol); 该
函数
可以用于返回BLOB和字符串的字节长度.对于BLOB,两个
函数
效果
是一样的,但是对于字符串
sql
ite3_column_bytes返回的是UTF8编码的字符串长度,而
sql
ite3_column_bytes16返回的是UTF16编码的字符串长度,其间会做必要的字符串格式转换 double
sql
ite3_column_double(
sql
ite3_stmt*,int iCol); 该
函数
返回double数据列 int
sql
ite3_column_int(
sql
ite3_stmt*,int iCol); 该
函数
返回int数据列
sql
ite3_int64
sql
ite3_column_int64(
sql
ite3_stmt*,int iCol); 该
函数
返回64位整数,即long long数据 const unsigned char *
sql
ite3_column_text(
sql
ite3_stmt*,int iCol); const void *
sql
ite3_column_text16(
sql
ite3_stmt*,int iCol); 该
函数
返回字符串,其中
sql
ite3_column_text
输出
的字符串使用UTF8编码
sql
ite3_column_text16使用UTF16编码 int
sql
ite3_column_type(
sql
ite3_stmt*,int iCol); 该
函数
返回对应列的数据类型
sql
ite3_value *
sql
ite3_column_value(
sql
ite3_stmt*,int iCol); 该
函数
以
sql
ite3_value结构体返回数据 上面是根据列ID来
获取
对应的列数据的,如果想通过列
名称
获取
列数据,则需要将列
名称
转换为对应的列ID,可以使用下面的
函数
: const char *
sql
ite3_column_name(
sql
ite3_stmt*,int N); const void *
sql
ite3_column_name16(
sql
ite3_stmt*,int N); 该
函数
返回对应列的
名称
4.
关闭
数据库
int
sql
ite3_close(
sql
ite3 * db); 使用该
函数
可以
关闭
数据库
上一篇:嵌入式 SQLite3 命令行参数设置与显
下一篇:嵌入式 Sqlite3学习小结
猜你在找的Sqlite相关文章
SQLite学习笔记
安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压...
作者:前端之家 时间:2021-01-12
windows上如何安装Sqlite
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Wi...
作者:前端之家 时间:2020-11-05
【Android数据存储】SQLite使用实例(附源码)
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 ...
作者:前端之家 时间:2020-08-07
SQLite数据库管理
作者:前端之家 时间:2020-08-07
SQLite3常用命令
作者:前端之家 时间:2020-08-07
加密你的SQLite
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、...
作者:前端之家 时间:2020-08-07
SQLite这么娇小可爱,不多了解点都不行啊
在我眼里,MySQL和Oracle是这样的 而SQLite在是这样的 所以这么萌的数据库,我真的应该多了...
作者:前端之家 时间:2020-08-07
SQLite这么娇小可爱,不多了解点都不行啊
在我眼里,MySQL和Oracle是这样的 而SQLite在是这样的 所以这么萌的数据库,我真的应该多了...
作者:前端之家 时间:2020-08-07
SQLite 这么娇小可爱,不多了解点都不行啊
(点击上方蓝字,快速关注我们) 作者:空之境界 网址:http://supermao.cn/sqlitezhe-yao-...
作者:前端之家 时间:2020-08-07
SQLITE3 使用总结
SQLITE3 使用总结 投稿:hebedich 字体:[ 增加 减小] 类型:转载 时间:2014-08-19 Sql...
作者:前端之家 时间:2020-08-07
编程分类
MySQL
MsSQL
Oracle
Sqlite
Postgre SQL
Mariadb
MongoDB
NoSQL
HBase
JDBC
最新文章
• SQLite学习笔记
• windows上如何安装Sqlite
• 【Android数据存储】SQLit
• SQLite数据库管理
• SQLite3常用命令
• 加密你的SQLite
• 加密你的SQLite
• SQLite这么娇小可爱,不多
• SQLite这么娇小可爱,不多
• SQLite 这么娇小可爱,不多
热门标签
更多 ►
undo日志
persistent-c
mysql-error-
postal-code
sql-match-al
mysql-5.6
mysql-8.0
database-tri
安装路径
系统错误
data_dir
丢失文件
主从同步
sql_mode
数据库目录
匿名用户
character_se
ID归零
数据库位置
查询表
重复字段
查询字段
截断日志
SUSPECT
7391
Remote Serve
Linked Serve
玄学问题
登录不上
开启远程访问