linux C语言函数API--数据库sqlite3编程函数

六:数据库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;
}


发布了9 篇原创文章 · 获赞 10 · 访问量 279

猜你喜欢

转载自blog.csdn.net/my___sunshine/article/details/103999667
今日推荐