用来计算一个数据库表中的行数
比如下图中的计算查找到的电视剧片数
用于限制由 SELECT 语句返回的数据数量
1.限制了从表中提取的行数,比如下图中查询为2行
2.如果我们想要偏移,不从头开始的话,可以有两种方法:
②offset子句,前面是显示数,后面是偏移数
1.文件放置
sqlite3.dll放在debug文件夹下和exe文件同级
sqlite3.h放在工程文件夹下和lib文件夹和debug文件夹同级
sqlite3.lib放在lib文件夹下
2.在.pro文件中加上以下代码
LIBS += $$PWD/lib/sqlite3.lib
3.测试,检验配置是否成功
首先看加入sqlite3头文件,写sqlite是否能弹出提示,
再看看能否运行sqlite3的API,这样,Qt的Sqlite3环境就搭建好了。
1. sqlite3_open(const char *filename, sqlite3 **ppDb)
打开或创建数据库,如上面配置所示
如果文件名filename不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件;
如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开
2. sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
sqlite3_exec()用于执行SQL语句,sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止
int mySqlite3::mySqliteExec(QString mysql)
{
char *zErrMsg = 0;
int rc=sqlite3_exec(db,mysql.toStdString().c_str(),nullptr,nullptr,&zErrMsg);
qDebug()<< sqlite3_errmsg(db);
return rc;
}
3. sqlite3_get_table(sqlite3 *db,const char *zSql,char ***pazResult,int *pnRow, int *pnColumn, char **pzErrmsg )
用于查询获取结果集
bool mySqlite3::getData(QString sql,char **&result,int &row,int &col)//获取结果集
{
char *zErrMsg = 0;
int rec=sqlite3_get_table(db,sql.toStdString().c_str(),&result,&row,&col,&zErrMsg);
if(rec!=SQLITE_OK)
{
qDebug()<
4. sqlite3_close(sqlite3*)
用于关闭数据库
mySqlite3::~mySqlite3()
{
sqlite3_close(db);
}
5.数据库单例封装
1.单例模式(懒汉式)实现步骤
- 构造函数私有化
- 定义一个私有的静态的类对象指针
- 在公有定义一个静态的get方法获取类对象指针
2.为什么使用单例模式?
- 单例只有一个实例,可以减少系统资源开销
- 提高创建速度,每次都获取已存在对象,且对象是全局共享的
- 单例在系统中只有一个实例,避免不同对象重复打开数据库
部分源码:
#ifndef MYSQLITE3_H
#define MYSQLITE3_H
#include "sqlite3.h"
#include
class mySqlite3
{
public:
~mySqlite3();
static mySqlite3* getInstance(QString filename);//静态的获取类对象指针方法
int mySqliteClose();//手动关闭数据库
int mySqliteExec(QString mysql); //执行sql
bool getData(QString sql,char **&result,int &row,int &col);//获取结果集
private:
static mySqlite3* mySqlite;//静态的类对象指针
mySqlite3(QString filename);//私有的构造函数
sqlite3 *db;
};
#endif // MYSQLITE3_H
以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!
你可能感兴趣的:(数据库学习,数据库,sqlite3,qt,sqlite)