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*,int,char**,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,有2个字段:ID和name。其中ID是一个自动增加的类型,以后insert时可以不去指定这个字段,它会自己从0开始增加*/
//	result = sqlite3_exec(db,"create table MyTable(ID integer primary key autoincrement,name nvarchar(32))",NULL,NULL,&errmsg);

    //插入一些记录
    /*
    result = sqlite3_exec(db,"insert into MyTable(name) values('走路')",0,0,&errmsg);
    result = sqlite3_exec(db,"insert into MyTable(name) values('骑单车')",0,0,&errmsg);
    result = sqlite3_exec(db,"insert into MyTable(name) values('坐汽车')",0,0,&errmsg);
    */


    //开始查询数据库
    result = sqlite3_exec(db,"select * from MyTable",LoadMyInfo,NULL,&errmsg);

    //关闭数据库
    sqlite3_close(db);
    return 0;
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值