Sqlite3 Api
数据库的打开
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
//返回值为 SQLITE_OK 表示操作正常
//例子 其中sqlite3 * mydb; mydb.db为数据库
int res = sqlite3_open("./mydb.db",&mydb);
数据库的关闭
int sqlite3_close(sqlite3 *);
//返回值和sqlite3_open 一致
//例子
res = sqlite3_close(mydb);
数据库的操作
使用sqlite3_prepare()
//首先声明
sqlite3_stmt * stat;
//然后将一条sqlite语句解析到stat的语句里面
//int sqlite3_prepare(
// sqlite3 *db, /* Database handle */
// const char *zSql, /* SQL statement, UTF-8 encoded */
// int nByte, /* Maximum length of zSql in bytes. */
// sqlite3_stmt **ppStmt, /* OUT: Statement handle */
// const char **pzTail /* OUT: Pointer to unused portion of zSql*/
//);
sqlite3_prepare( db, “insert into Tbl_2( ID, file_content) values( 10, ? )”, -1, &stat, 0 );//最后一个默认为0,-1表示不限制大小,
//紧接着就是把带有?的stat的与对应的数值进行绑定
//具体的函数有:
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
//用法参考:http://www.sqlite.org/c3ref/bind_blob.html
//紧接着就可以执行语句,当返回值为SQLITE_ROW时表示OK
int result = sqlite3_step( stat );
//当使用step查询的时候,运行一次只有一条数据,需要循环 运行才能遍历
//紧接着就是获取数据,以下面的句子为例
int id = sqlite3_column_int( stat, 0 );
//获取的是int型,为第0个字段
//如果查询完了,还需要接着以类似的字句查询,需要重置stat
result = sqlite3_reset(stat);
///这样, stat 结构又成为 sqlite3_prepare 完成时的状态,你可以重新为它 bind 内容。
使用sqlite3_exec()
int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg );
//第一个参数为句柄
//第二个参数为一条sql语句,
//第三个为回调函数,执行完这条语句后会调用该函数
//第四个可以为任意值,最终会传入回调函数里面
//第五个为错误信息
//返回值为SQLITE_OK 的时候表示成功,错误的时候可以打印errmsg参数
添加sqlite3官方的库到QT中
1、把sqlite3.h 和 sqlite3.lib添加到工程目录中
2、把sqlite3.dll添加到指定目录
3、在工程中的.pro文件中添加如下:
LIBS += ......../sqlite3.dll(前面为第二步的路径)