一:sqlite3及相关工具的安装
1:apt指令直接安装
sudo apt-get install sqlite3 //安装sqlite3
sudo apt-get install libsqlite3-dev // 安装sqlite3编译需要的工具包
sqlite3 -version//用来检查是否安装成功
2.源码安装
//从官网下载对应的压缩包
www@ubuntu:~$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
tar -xzvf sqlite-autoconf-3310100.tar.gz //对下载的压缩包进行解压
cd sqlite-autoconf-3310100/ //进入到解压的文件夹内
./configure //运行相应的配置文件,检测是否符合当前的编译环境,并且检查依赖的软件包是否可用或者是否缺少依赖软件包,并生成Makefile
make //执行make命令,这一步比较慢,进行编译源程序,请耐心等待
sudo make install //执行make install命令,把对应的库和可执行文件拷到指定的环境变量目录(配置环境变量 ),需要sudo权限进行安装,否则会出错,安装完毕。
二:sqlite3基本命令
1.创建表
create table table_name(id integer, name char, tel integer); //创建一个表
2.插入数据
insert into table_name values(1, "www", 6666);
3.查询相关数据
select * from table_name; //查询所有数据
select * from table_name where id = //按指定内容查询
4.更新数据
update table_name set name = "change" where id = 866; //
5.删除数据
delete from table_name where id = 666; //删除id为666的所有信息
6.删除表
drop table table_name; //删除整个表
三:sqlite3 API编程
sqlite3_open()
int sqlite3_open(const char *dbname,sqlite3 **db)
功能描述:打开一个数据库,如果该数据库不存在,sqlite则会自动创建
参数解析:①第一个参数是特定文件名(xx.db)
②第二个参数是sqlite3 **结构体指针,成为数据库句柄(相当于是数据库的描述符)
返回值:成功则返回SQLITE_OK(0),失败则返回其他错误信息(非0值)
sqlite3_exec()
int sqlite3_exec(sqlite3 *db,const char *sql,int(*callback)(void*,int,char**,char**),void *arg,char **errmsg)
功能描述:编译和执行sql语句,将查询到的结果返回给回调函数callback
参数解析:
①第一个参数是打开的数据库句柄
②第二个参数是一个字符指针,表示所要执行的sql语句字符串,以'\0'结尾
③第三个参数是一个回调函数,用来处理查询结果,如果不需要回调则NUL填L(比如insert或delete操作时),一般用于SELECT
④第四个参数是传给回调函数的指针参数,如果不需要传递,则值填NULL
⑤第五个参数是返回错误信息
返回值:成功则返回SQLITE_OK(0),失败则返回其他错误信息(非0值)
sqlite3_get_table()
int sqlite3_get_table(sqlite3 *db, const char *zsql,
char ***pazResult, int *nrow, int *ncolumn,char **zErrmsg);
功能描述:主要是用于以非回调的方式进行SELECT查询
参数解析:
①第一个参数是一个数据库句柄,是打开数据库得到的指针
②第二个参数是一条sql语句,与sqlite3_exec()中的一样,以'\0'结尾的字符串
③第三个参数是查询的结果,是一个一维数组,它的内存布局是:字段名称,后面是紧接着每个字段的值(就是列表名,后面跟着一个一个数据)
④第四个参数是查询出多少条记录(即查出多少行,不包括字段名的那一行)
⑤第五个参数是有多少字段(多少列)
⑥第五个参数是返回错误信息,这里是指针的指针
返回值:成功则返回SQLITE_OK(0),失败则返回其他错误信息。
sqlite3_close()
int sqlite3_close(sqlite3 *db)
//参数说明:db需要关闭的数据库文件。
//功能描述:关闭之前调用的数据库连接,所有与连接相关的语句都应该在关闭之前完成
//返回值:成功则返回SQLITE_OK(0),失败则返回其他错误信息(非0值),其中如果是查询没有完成,则返回SQLITE_BUSY