SQLite简介: SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
参考文档: https://www.runoob.com/sqlite/sqlite-c-cpp.html
下载sqlite源码:
http://sqlite.org/download.html
编译安装
# ./configure --host=arm-linux prefix=/home/user/rootfs
# make
# make install
注意事项:
host=arm-linux
prefix指明安装路径
(手工安装时文件清单:)
将bin目录下的sqlite3复制至目标标bin目录下
将lib目录下的文件复制至目标文件系统的lib目录中
将lib目录下的文件复制至交叉编译器的lib目录中
将include目录下的文件复制至交叉编译器的include目录中
bin目录下的sqlite3是用于测试的文件
C语言API函数使用说明
创建数据库:
int sqlite3_open(const char *filename, // 数据库路径
sqlite3 **ppdb); // 数据库句柄
关闭数据库:
int sqlite3_close(sqlite3 *db);
如果filename为NULL,则在RAM中创建数据库;
如果文件已存在则打开数据库存,不存在则创建数据库;
构建sql语句:
char *sqlite3_mprintf(const char*, va_list);
int sqlite3_free(char *);
例:
// 构建SQL语句
sql = sqlite3_mprintf("delete from %s where %s = %d;", val1, val2, val3);
// 添加执行语句......
sqlite3_exec(db, sql, callback, NULL, NULL);
// 释放内存
sqlite3_free(sql);
说明:sqlite3_mprintft和sqlite3_free总是成对出现,否则会造成内存泄露
执行sql语句:
int sqlite3_exec(sqlite3 *db, // 数据库句柄
const char *sql, // SQL语句
int (*sqlite3_callback)(void *,int, char**,char**), // 回调函数
void *data, // 传给回调函数的参数指针
char **errmsg); // 错误消息字符串指针
回调函数定义:
int callback_fun(void *para, // 执行语句传入的data参数
int n_column, // 字段数
char **column_value,// 字段内容数组
char **column_name);// 字段名称数组
非回调查询:
int sqlite3_get_table(sqlite3 *,
const char *sql,
char **resultp,
int *nrow,
int *ncolumn,
char **errmsg);
void sqlite3_free_table(char **resultp);
sqlite3_get_table必须与sqlite3_free_table成对使用