SQlite3中级篇(C/C++编程接口)

/*
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;
}

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能