/* sqlite数据库sqlite是一个开源的嵌入式关系数据库,在2000年由D.Richard Hipp发布。sqlite能够减少应用程序管理数据库的开销,可逢移植性好,高效而且可靠。sqlite嵌入到应用程序中,与应用程序共用相同的进程空间,而不是单独的一个进程。从外部看,sqlite并不像一个关系数据库,但在进程内部,却是完整的、自包含的数据库引擎。 */
//应用到的函数: sqlite3_open(); //打开数据 sqlite3_exec(); //执行sql语句 sqlite3_close() //关闭数据
/* 函数参数介绍 */ //打开数据 int sqlite3_open( //打开数据库,并得到数据句柄 "temp.db",//要打开的数据库文件名,如果没有者新建个数据库文件 &db //保存打开数据库的数据库指针 ); //执行sql语句 typedef int (*sqlite3_callback)( //sqlite3_exec()的回调函数 void * para,//可传入指针(比如结构指针)要经过强制转换才能用 int n_column,//记录有多少个字段(即这条记录有多少列) char ** column_value,//个关键值,查出来的数据都保存在这里 char ** column_name //跟前个char**是对应的,表示这个字段的字段名称 ); int sqlite3_exec( //执行sql语句,没有返回值的3,4直接NULL sqlite3*,//数据库句柄 const char *sql,//要执行的数据语句字符串的首地址 int (*callback)(void*,int,char**,char**),//(*sqlite3_callback)的地址 void *,//Callback函数第一个参数指针 char **errmsg //执行完所有sql返回0,否者返回错误代码 ); int sqlite3_close( //关闭之前打开的数据库 sqlite3 * //要关闭的数据指针 );
//应用例子 #include <stdio.h> #include <string.h> #include "sqlite3.h" //sqlite3的回调函数 //sqlite每查到一条记录,就调用一次这个回调 //回调函数原型:typedef int (*sqlite3_callback)(void*,char**); int LoadMyInfo(void* para,int n_column,char** column_value,char** column_name) { int i; printf("记录包含%d个字段\n\n",n_column); for(i=0;i<n_column;i++) { printf("字段名:%s\t字段值:%s\n\n",column_name[i],column_value[i]); } printf("------------------------------\n"); return 0; } int main(int argc,char *argv[]) { sqlite3 * db; int result; char * errmsg = NULL; result = sqlite3_open("temp.db",&db); //数据库操作代码 /*创建一个测试表,表名叫MyTable_1,有2个字段:ID和name。其中ID是一个自动增加的类型,以后insert时可以不去指定这个字段,它会自己从0开始增加*/ // result = sqlite3_exec(db,"create table MyTable(ID integer primary key autoincrement,name nvarchar(32))",NULL,&errmsg); //插入一些记录 /* result = sqlite3_exec(db,"insert into MyTable(name) values('走路')",&errmsg); result = sqlite3_exec(db,"insert into MyTable(name) values('骑单车')","insert into MyTable(name) values('坐汽车')",&errmsg); */ //开始查询数据库 result = sqlite3_exec(db,"select * from MyTable",LoadMyInfo,&errmsg); //关闭数据库 sqlite3_close(db); return 0; }
原文链接:https://www.f2er.com/sqlite/202346.html