sqlite基础API
/* 打开/创建数据库文件 * 如果数据库文件不存在就创建数据库文件。 * 数据库操作句柄保存在第二个参数中。 * 第一个参数:文件路径及其文件名 * 第二个参数:sqlite3操作句柄 * 返回值:SQLITE_OK表示成功 */ int sqlite3_open( const char *filename, sqlite3 **ppDb ); /* 执行sql语句 * 第一个参数:数据库操作句柄 * 第二个参数:sql语句 * 第三个参数:回调函数 * 第四个参数:传入回调函数的参数 * 第五个参数:保存操作失败的错误信息 * 返回值:SQLITE_OK表示成功 */ int sqlite3_exec( sqlite3 * , const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg ); /* 回调函数: * 第一个参数:承接sqlite3_exec第四个参数(回调函数参数) * 第二个参数:查询结果的条数 * 第三个参数:查询结果key/value中的value * 第四个参数:查询结果key/value中的key */ int (*callback)(void *, int, char **, char **) /* 释放申请的动态内存 */ void sqlite3_free(void *); /* 关闭数据库操作 * 参数:数据库操作句柄 */ int sqlite3_close(sqlite3 *);
简单应用:
1 #include <sqlite3.h> 2 #include <stdio.h> 3 4 int main(void) 5 { 6 sqlite3 *db; 7 char *err_msg = NULL; 8 char *sql = "create table test_table(ID INT PRIMARY KEY NOT NULL, \ 9 NAME TEXT NOT NULL, \ 10 AGE INT NOT NULL, \ 11 ADDRESS CHAR(50), \ 12 SALARY REAL);"; 13 int ret; 14 15 ret = sqlite3_open("test.db", &db); 16 if (ret != SQLITE_OK) { 17 printf("%s[%d] sqlite3_open error!\n", __func__, __LINE__); 18 goto error; 19 } 20 21 ret = sqlite3_exec(db, sql, NULL, NULL, &err_msg); 22 if (ret != SQLITE_OK) { 23 printf("%s[%d] sqlite3_exec error!\n", __func__, __LINE__); 24 goto error; 25 } 26 char *tmp = "insert into test_table values(1,'test',1,'beijing', 1000);"; 27 ret = sqlite3_exec(db, tmp, NULL, NULL, &err_msg); 28 if (ret != SQLITE_OK) { 29 printf("%s[%d] sqlite3_exec error!\n", __func__, __LINE__); 30 goto error; 31 } 32 33 error: 34 35 if (err_msg) { 36 sqlite3_free(err_msg); 37 } 38 if (db) { 39 sqlite3_close(db); 40 } 41 42 return 0; 43 }
编译:
1 gcc main.c -lsqlite3