六:数据库sqlite3编程函数
1. sqlite3_open() 打开数据库文件
【原型】 int sqlite3_open(const char *filename,sqlite3 **ppDb);
【头文件】 #include "sqlite3ext.h"
【功能】 打开数据库文件
【参数】 filename: 数据库文件
ppDb: 用于保存打开的数据库文件filename的信息
【返回值】 成功:SQLITE_OK(0)
失败:
2. int sqlite3_exec() 执行操作数据库的命令
【原型】 int sqlite3_exec(sqlite3*,const char *sql,
int (*callback)(void*,int,char**),void *,char **errms);
【头文件】 #include "sqlite3ext.h"
【参数】 sqlite3* : 将sqlite3_open的第二个参数传过来
sql : 你要执行命令的语句
callback : 函数指针,在执行查询命令的时候会用到
void * : 传递个callback的参数
errms :保存出错的信息
【返回值】 成功:SQLITE_OK(0)
3. int (*callback)() 将数据库数据打印
【原型】 int (*callback)(void *arg,in col,char **str,char **name)
【参数】 arg :接收第四个参数传递过来的结果
col : 多少列
str : 每一行的结果
name : 字段名
4. sqlite3_close() 关闭数据库
【原型】 int seqlite3_close(sqlite3*);
【参数】 sqlite3* :需要关闭的数据库文件
1-4代码演示:
#include "sqlite3.h"
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
int show_result(void *arg,int col,char **str,char **name)
{
int i;
printf("经过我仔细分析,我发现表格有%d列!\n",col);
for(i=0; i<col; i++)
{
printf("查询的结果是:%s 字段名是:%s\n",str[i],name[i]);
}
return 0;
}
int main()
{
sqlite3 *mydb;
int ret;
int i;
char stuname[20];
int stuage;
int stunum;
char cmd[100]="create table stu (name char[20],age int,num int);";
ret=sqlite3_open("./mydata.db",&mydb);
if(ret!=SQLITE_OK)
{
printf("打开数据库文件失败!\n");
return -1;
}
ret=sqlite3_exec(mydb,cmd,NULL,NULL,NULL);
if(ret!=SQLITE_OK)
{
printf("执行新建语句失败!\n");
return -1;
}
for(i=0; i<3; i++)
{
bzero(cmd,100);
printf("请输入你要插入的学生信息:名字 年龄 学号\n");
scanf("%s",stuname);
scanf("%d",&stuage);
scanf("%d",&stunum);
sprintf(cmd,"insert into stu values (\"%s\",%d,%d);",stuname,stuage,stunum);
ret=sqlite3_exec(mydb,cmd,NULL,NULL,NULL);
if(ret!=SQLITE_OK)
{
printf("执行插入语句失败!\n");
return -1;
}
}
bzero(cmd,100);
strcpy(cmd,"select * from stu where name=\"li\";");
ret=sqlite3_exec(mydb,cmd,show_result,NULL,NULL);
if(ret!=SQLITE_OK)
{
printf("执行查询语句失败!\n");
return -1;
}
sqlite3_close(mydb);
return 0;
}