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" 就可以如上遍历整行记录了。第四个参数是表头,也是用指针数组来存储,每个字段名用字串存储,和前个参数一样用法。
重要的一点是,此回调函数是每查到一行记录就会回调一次,只处理一行记录。如果查询的结果有四行记录,就会被调用四次。
总结以上是内存溢出为你收集整理的sqlite3 c语言编程 之 三个基本函数全部内容,希望文章能够帮你解决sqlite3 c语言编程 之 三个基本函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)