目录
一、文件夹的配置
二、编程工具的配置
1.指定库文件及其输出可执行文件位置
LIBS+=$$PWD/lib/sqlite3.lib
DESTDIR=bin
LIBS+=$$PWD/lib/sqlite3.lib
:用于指定项目链接时需要包含的库文件,这里链接的是 SQLite3 数据库的库文件。DESTDIR=bin
:用于指定项目构建生成的可执行文件或库文件的输出目录为bin
。
2.导入新添加的sqlite3.h头文件
三、使用SQLite常见API函数
头文件 #include <sqlite3.h>
1.打开数据库
int sqlite3_open(const char *,sqlite3 **db)
参数:1、数据库文件【IN】
2、sqlite3 数据指针【out】
2.关闭数据库
int sqlite3_close(sqlite3 *db)
参数:1、数据库文件【IN】
3.获取错误代码
int sqlite3_errcode(sqlite3 *db)
参数:1、sqlite3结构指针
4.获取错误信息
const char *sqlite3_errmsg(sqlite3 *db)
参数: sqlite3结构指针
5.预编译SQL语句
sqlite3_stmt
是 SQLite 库中的一个重要结构体,它代表了一个预编译的 SQL 语句对象,也被称为 “准备好的语句(prepared statement)”。
int sqlite3_prepare(sqlite3*, const char*, int, sqlite3_stmt**,const char**)
参数:
1、数据库连接指针【IN】
2、sql语句【IN】
3、sql语句最大字符数【IN】
4、处理后语句statement【out】
5、返回sql语句未使用部分的指针【out】
6.绑定条件变量
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
参数:
1.sqlite3_stmt*
:预编译 SQL 语句对象指针。
2.int
:占位符位置,从 1 开始计数。
3.const char*
:要绑定的文本数据指针。
4.int n
:文本数据长度
5.void(*)(void*)
:回调函数指针,常用SQLITE_STATIC
或SQLITE_TRANSIENT
处理内存。返回
SQLITE_OK
表示绑定成功,否则失败。相关函数:
int sqlite3_bind_int(sqlite3_stmt*, int, int)
int sqlite3_bind_double(sqlite_stmt *pstmt,int ,double value)
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*))
7.结果集获取
int sqlite3_step(sqlite_stmt *pstmt)
参数:1、statement对象【IN】
使用说明:
返回SQLITE_ROW表示准备好一行的数据。
返回SQLITE_DONE表示执行完成,无数据。
如果只是执行SQL,则该函数只调用一次即可。
8.行数据获取
int sqlite3_column_int(sqlite_stmt *pstmt,int col)
参数:1、pstmt-statement对象【IN】
2、col-列位置,从0开始编号
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
不同类型的函数调用:
qDebug()<<"user_id="<<sqlite3_column_int(pstmt,0);
strcpy(name,(const char *)sqlite3_column_text(pstmt,1));
qDebug()<<"user_name="<<name;
//要将const unsigned char *转化为const char *