sqlite3 C接口基础

函数声明如下:

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

int sqlite3_close(sqlite3*);

 

  简单来说就是:

  sqlite3_open()  //打开(创建)一个数据库

  sqlite3_exec()  //执行一条SQL语句

  sqlite3_close()  //关闭数据库

 

注意:

  程序编译之前需要 sudo apt-get install libsqlite3-dev

  程序编译 gcc demo.c -lsqlite3

示例程序:

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

static int callback(void *data, int argc, char *argv[], char *azColName[])
{
    int i;
    fprintf(stderr, "%s: ", (const char *)data);
    for (i = 0; i < argc; i++) {
        fprintf(stdout, "%s = %s\n", azColName[i], argv[i]?argv[i]:"NULL");
    }
    fprintf(stdout, "\n");

    return 0;
}

int main(int argc, char *argv[])
{
    int ret;
    sqlite3 *db;
    char *sql = NULL;
    char *zErrMsg = NULL;
    const char *data = "CallBack function called";

    ret = sqlite3_open("testDB.db", &db);
    if (ret) {
        fprintf(stderr, "Can't open database: %s", sqlite3_errmsg(db));
        exit(0);
    } else {
        fprintf(stdout, "Opened database successfully\n");
    }
#if 0
    sql = "DELETE from COMPANY where ID=2;"\
           "SELECT * from COMPANY;";
#else
    sql = "DELETE from COMPANY where ID=3;";
#endif
    ret = sqlite3_exec(db, sql, callback, (void *)data, &zErrMsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "SQL error %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Operation done successfully\n");
    }

    sqlite3_close(db);

    return 0;
}

 

重要:

  1.回调函数作用就是接受、处理数据库查询的数据,其中参数的意义分别为:

    1>data 用户自己传入

    2>argc 查询到的该条数据一共有几列

    3>argv 获取到的该列的数据

    4>azColName 列名称

  2.sqlite3_exec执行之后如果出错,则需要释放 zErrMsg

参考资料:

  https://www.sqlite.org/index.html(sqlite官方文档)

  https://www.runoob.com/sqlite/sqlite-tutorial.html(菜鸟教程sqlite)

  https://cloud.tencent.com/developer/doc/1228(腾讯云sqlite开发者手册)

  http://www.cnblogs.com/mingforyou/archive/2013/02/19/2917122.html

转载于:https://www.cnblogs.com/rivsidn/p/10818664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值