sqlite3常用的c语言函数接口

  1. sqlite3_open: 用来打开或创建一个sqlite3数据库引擎的连接
    在sqlite3数据库引擎中,用结构体sqlite3来表示 sqlite3的数据库引擎 的连接。
    我们在调用sqlite3_open这个函数时,它会给我们创建一个sqlite3数据库引擎的连接。
int sqlite3_open(
            const char *filename, //database fiename, 你要打开或创建的数据库的文件名
            sqlite3 **ppdb;  //sqlite3这个结构体的二级指针
        );
返回值:
    成功返回 SQLITE_OK, 并且ppdb指向新创建的sqlite3数据库引擎的连接
    其他值,表示失败。

2. sqlite3_exec:操作一个SQL引擎的数据库系统,实际上就是在这个数据库引擎上执行SQL语句

int sqlite3_exec(
        sqlite * db; //指向sqlite3数据库系统引擎的连接
        const char *sql; //你要执行的SQL语句的字符串
        int (*callback)(void *, int, char **, char **), //函数指针,指向回调函数
        void *, //将作为callback的第一个参数,传给回调函数
        char **errmsg //指向错误字符串
        );
    返回值:
        //成功返回0
        //失败返回其他值,错误信息在errmsg

        int (*callback)(void *, int, char **, char **), //函数指针,指向回调函数
        callback主要是在SQL语句为SELECT时用,SELECT返回的结果是一个二维表, 在
        sqlite3_exec实现查询语句,每查到一条记录,就会把结果返回, 每查到一条符合
        条件的记录,就调用callback指向的函数。

            int (*callback)(void *,  //
                int,  //结果中多少列
                char **, //char* column_value[], 指针数组,每列的值
                char **, //char* column_name[], 指针数组,每列的字段名
                )
  1. sqlite3_close

代码实列:

#include <stdio.h>
#include <errno.h>
#include <sqlite3.h>
/*

    gcc  sqlite3.c  -I/usr/local/sqlite/include -L/usr/local/sqlite/lib -lsqlite3 -o sqlite3_test
*/
/*
    查询结果的回调函数,当查询语句每查询到一条符合要求的记录时,
    就会调用这个回调函数,并且你的回调函数要返回0(表示成功),查询引擎
    才会继续往下面查询。
*/
int select_resp(void *data,  int column_num ,char *column_value[], char *column_name[])
{
    int i;

    for (i = 0; i < column_num; i++)
    {
        printf("%s\t", column_name[i]);
    }
    printf("\n");

    for (i = 0; i < column_num; i++)
    {
        printf("%s\t", column_value[i]);
    }
    printf("\n\n\n\n");


    return 0;
}

int main(int argc, char *argv[])
{
    int r;
    /*
    step 1: 调用sqlite3_open打开或创建一个sqlite3数据库引擎的连接
    */
    sqlite3 *db = NULL;
    r = sqlite3_open(argv[1], &db);
    if (r != SQLITE_OK)
    {
        perror("sqlite3_open error:");
        return -1;
    }

    /*
    step 2: sqlite3_exec:执行SQL语句
    */

    /*const char *sql =   "CREATE TABLE db_score\
                    (\
                    ID int(4)  PRIMARY KEY,\
                    NAME  varchar(32) NOT NULL,\
                    SCORE int(4)\
                    ); " ;  
                    */


    const char *sql = "INSERT INTO db_score VALUES(1, \"ZHOULONG\", 60) ; ";

    //while (1)
    //{

        int id;
        char name[32];
        int score;
        //scanf("%d%s%d", &id, name, &score);
        //if (id == 0)
        //{
        //  break;
        //}

        //char sql_cmd[64];

        //snprintf(sql_cmd,64, "INSERT INTO db_score VALUES(%d, '%s', %d) ; ", id, name, score);
        //printf("%s\n", sql_cmd);

        char *sql_cmd = "SELECT ID,NAME FROM db_score WHERE SCORE < 60 ; ";


        char *errmsg = NULL; //用来保存错误信息

        int flag = 0;       
        r = sqlite3_exec(db, sql_cmd, select_resp, &flag, &errmsg);
        if (r != 0)
        {
            printf("sqlite3_exec error : %s\n", errmsg);
            return -1;
        }
    //}

    /*
    step 3: 调用sqlite3_close关闭数据库连接
    */

    sqlite3_close(db);//

    return 0;

}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值