函数声明如下:
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