SQLite简介

DinS          Written on 2018/4/18

一、SQLite简介

SQLite属于嵌入型数据库(embedded database)。这种数据库就是一个文件,操作数据库本质上都是硬盘文件读写。另一种数据库是client-server型,每一次操作都是网络IO。
SQLite的优点就不说了,可以去官网自己看。本专题将介绍如何配置、使用SQLite。

另外操作SQLite格式的文件不一定非要使用代码,有database tool提供同样的操作,推荐使用DB Browser for SQLite

二、配置SQLite

第一步下载源代码:

amalgamation指把所有必要的代码合成一个.c文件。

解压出来内容如下:

本专题只用到了sqlite3.c和sqlite3.h。

新建工程,将上述两个文件拷贝过去并加入工程:

然后生成工程:

Done!

因为就一个.c文件,所以直接加入源代码是最直接简单的方式。

三、使用SQLite的基本示例

以下内容基本来源于官网示例(http://sqlite.org/quickstart.html)

先来看一个不带返回值(即非SELECT操作)的例子作为入门:

(大图点这里)

这个例子涵盖了使用sqlite的基本步骤。打开和关闭数据库就不解释了,打开时传入的字符串默认为UTF-8编码。
看执行SQL的函数。第一个是open得到的数据库指针,第二个是SQL语句,后面两个NULL先不解释,对于不需要返回值的SQL语句,传入NULL即可,最后是错误信息(如果有的话),其他照着写即可。
执行完毕后会多出一个文件:

现在有了一张表,我们再插入一些数据:

大图点这里

大致就是这样,主要准备一些数据供SELECT调用。
现在我们的数据库里有了一些数据,一共3条记录,下面看看带返回值的SQL语句如何执行,即如何获取SELECT的结果。

我们需要提供一个回调函数传入sqlite3_exec:

函数签名必须如此,各个参数的意义已经标明。
特别注意的是,这个回调函数在每次SELECT出结果后都会调用一次。换句话说,如果一个SELECT语句会选出30行,那么这个回调函数就会调用30次,每出来一行就调用一次。
比如我们执行了这样一条SELECT语句,第三个参数传入回调函数:

大图点这里

运行结果如下:

通过这个结果可以反过来加深回调函数中各个参数的理解。
可以看到for执行了三次,每一次打印出了列标题和对应内容,回调函数总共执行了两次。

以上就是sqlite的基本用法了,剩下的就是SQL语句本身的使用和数据库设计,本专题不再探讨。
另外使用纯C接口对于c++而言很麻烦,正常使用肯定是要包装成类使用的,网上有各种wrapper,自己写一个也不费事,交给读者了。