sqlite3 c语言编程 之 三个基本函数

前端之家收集整理的这篇文章主要介绍了sqlite3 c语言编程 之 三个基本函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite3 编程只需要一个头文件与一个库文件,安装请看sqlite3 在linux系统上的安装

/*filename:insert.c*/
#include<stdio.h>
#include<sqlite3.h>

intmain()
{
sqlite3*db;
sqlite3_open("stu.db",&db);

char*sql="insertintostudentvalues(10,'james',99)";
sqlite3_exec(db,sql,NULL,NULL);

sqlite3_close(db);
return0;
}

如上代码,最简单的操作,只需要一个结构 "sqlite *db",

三个函数,"sqlite3_open()" "sqlite_exec()" "sqlite_close()"。

编译只需加上一个库链接

$gccinsert.c-oinsert-lsqlite3


sqlite3 是一个小巧的数据库,命令,接口都很简单,手册可以去官网www.sqlite.org 查看,也可以下载来,离线查看,官网上的链接位置如下。

入门基本函数:Documentation -> sqlite Programming Interfaces -> Introduction to the C/C++ API

参考手册:Documentation -> sqlite Programming Interfaces -> C/C++ API Reference


数据库结构体:

typedefstructsqlite3sqlite3;
sqlite3*db;

关于这个结构体就不必多说,如上只要声名一个指针即可,如何操作都封装在库函数里了,之后用到的库函数的第一个参数大多都是这个结构体指针。


数据库的开关:

intsqlite3_open(constchar*filename,sqlite3**ppDb);
intsqlite3_close(sqlite3*);

"sqlite3_open()" 有两个参数,第一个是数据库文件名,第二个是前面声名的指针取地址。

if(sqlite3_open("stu.db",&db))
{
puts(sqlite_errmsg(db));
exit(1);
}

常用的方式如上,sqlite3 中的函数保持了统一的风格,返回值表示了函数调用的结果,sqlite3 定义了 31 个基本返回值与 52 个扩展值。

(0) SLITE_OK,当函数成功时返回 0

成功就只有一种,但失败有各种失败情况,定义的 83 个返回值描述了 82 种失败的原因。

如果想打印出错误号的文字描述可以用上面的函数

constchar*sqlite3_errmsg(sqlite3*);

参数是前声名的数据库结构指针,返回值是字符串指针,如上直接打印即可。


数据库的操作:

intsqlite3_exec(sqlite3*,constchar*sql,int(*callback)(void*,int,char**,char**),void*,char**errmsg);

看到如此复杂的函数,就知道了它能做很多的事情。事实上也是如此,它相当于一个 sql 命令接口,直接把第二个参数的字符串转换成 sql 语句去解析执行。

typedefint(*callback)(void*,char**);

intsqlite3_exec(sqlite3*,callback,char**errmsg);

将第三个参数单拉出来,这样声名一个别名,"sqlite3_exec" 参数看着就很简捷了,有五个,第一个是数据库的结构体指针,第二个是 sql 语句的字符串指针,第三个是回调函数,第四个是回调函数的参数,第五个是错误信息的字符串指针的取地址。前两个参数与最后一个参数的用法,如下。

char*errmsg;
if(sqlite_exec(db,"select*fromstudent",&errmsg))
{
puts(errmsg);
sqlite3_free(errmsg);
exit(1);
}

前两个参数很好懂,第五个参数,先声名一个指针,然后取址传给 "sqlite3_exec",此函数调用出错时会用 "sqlite3_malloc()" 分配一个空间存放错误的字串描述,所以出错的时候用完 "errmsg" 需要用 "sqlite3_free" 释放空间。

第三个参数,回调函数用法如下。

intdeal(void*arg,intncol,char*data[],char*head[])
{
inti;
for(i=0;i<ncol;i++)
printf("%s\t%s\n",head[i],data[i]);
}

这就上述的回调函数简单用法。有四个参数,第一个是 "sqlite3_exec" 主动传来的参数即 "sqlite3_exec" 的第四个参数。第二个参数,是查询结果的字段数,即结果的列数。第三个是查询的记录,用指针数组来存放,每个字段值用字符串存储,配合前个参数 "ncol" 就可以如上遍历整行记录了。第四个参数是表头,也是用指针数组来存储,每个字段名用字串存储,和前个参数一样用法

重要的一点是,此回调函数是每查到一行记录就会回调一次,只处理一行记录。如果查询的结果有四行记录,就会被调用四次。

原文链接:https://www.f2er.com/sqlite/199956.html

猜你在找的Sqlite相关文章