Qt Sqlite封装类SqliteUtil

时间:2023-02-16 11:38:51

在网上找了很久关于Qt访问Sqlite数据库的封装类,但是没能找到一个很好的访问调用类,自己写了一个出来,在这里分享一下,希望能对大家有所帮助,小弟不才,写代码没多少经验,如果有什么不恰当之处,请批评指出:

sqliteutil.h

#ifndef SQLITEUTIL_H
#define SQLITEUTIL_H #include <QSqlDatabase>
#include <QSqlQuery>
#include <QList>
#include <QVariant>
#include <QSqlQueryModel> class SqliteUtil
{
public:
explicit SqliteUtil(const QString& strDatabase = "smart.db");
~SqliteUtil(); bool createConnection(const QString& strConn); QSqlRecord ExecuteRecord(const QString& strQuery);
QSqlRecord ExecuteRecord(const QString& strQuery, QList<QVariant> lstParameter);
QSqlRecord ExecuteRecord(const QString& strQuery, QVariant Parameter); QSqlQuery ExecuteSqlQuery(const QString& strQuery, QList<QVariant> lstParameter);
QSqlQuery ExecuteSqlQuery(const QString& strQuery, QVariant Parameter);
QSqlQuery ExecuteSqlQuery(const QString& strQuery); int ExecuteInt(const QString& strQuery);
int ExecuteInt(const QString& strQuery, QList<QVariant> lstParameter);
int ExecuteInt(const QString& strQuery, QVariant Parameter); bool Execute(const QString& strQuery, QVariant Parameter);
bool Execute(const QString& strQuery, QList<QVariant> lstParameter); QString ExecuteString(const QString& strQuery); void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery);
void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
QList<QVariant> lstParameter);
void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery, QVariant Parameter); private:
QSqlDatabase m_db;
QString m_strDatabase; }; #endif // SQLITEUTIL_H

sqliteutil.cpp

#include "sqliteutil.h"
#include <QDebug> /****************************************************************************
**
** Copyright (C) 2014 scutemos-huabo
** All rights reserved.
** Contact: wiessharling@qq.com
** Please keep the author contact information.
** 2014-07-16
**
****************************************************************************/ SqliteUtil::SqliteUtil(const QString &strDatabase) :
m_strDatabase(strDatabase)
{
createConnection(m_strDatabase);
} SqliteUtil::~SqliteUtil()
{
m_db.close();
} bool SqliteUtil::createConnection(const QString &database)
{
//与数据库建立连接
if (QSqlDatabase::contains("my_conn"))
{
m_db = QSqlDatabase::database("my_conn");
}
else
{
m_db = QSqlDatabase::addDatabase("QSQLITE", "my_conn");
}
//设置数据库名
m_db.setDatabaseName(database);
//打开数据库
if (!m_db.open())
{
qDebug() << "Open database failed!";
return false;
}
else
{
return true;
}
} QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.exec();
return query.record();
} QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery, QList<QVariant> lstParameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
for(int i = ; i < lstParameter.count(); i++)
query.bindValue(i, lstParameter[i]);
query.exec();
return query.record();
} QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery, QVariant Parameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.bindValue(, Parameter);
query.exec();
return query.record();
} QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery, QList<QVariant> lstParameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.setForwardOnly(true);
for(int i = ; i < lstParameter.count(); i++)
query.bindValue(i, lstParameter[i]);
query.exec();
return query;
} QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery, QVariant Parameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.setForwardOnly(true);
query.prepare(strQuery);
query.bindValue(, Parameter);
query.exec();
return query;
} QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.setForwardOnly(true);
query.prepare(strQuery);
query.exec();
return query;
} int SqliteUtil::ExecuteInt(const QString& strQuery)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.exec();
int ID = ;
while(query.next())
{
ID = query.value().toInt();
}
return ID;
} int SqliteUtil::ExecuteInt(const QString& strQuery, QList<QVariant> lstParameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
for(int i = ; i < lstParameter.count(); i++)
query.bindValue(i, lstParameter[i]);
query.exec();
int ID = ;
while(query.next())
{
ID = query.value().toInt();
}
return ID;
} int SqliteUtil::ExecuteInt(const QString& strQuery, QVariant Parameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.bindValue(, Parameter);
query.exec();
int ID = ;
while(query.next())
{
ID = query.value().toInt();
}
return ID;
} bool SqliteUtil::Execute(const QString& strQuery, QVariant Parameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.bindValue(, Parameter);
return query.exec();
} bool SqliteUtil::Execute(const QString& strQuery, QList<QVariant> lstParameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
for(int i = ; i < lstParameter.count(); i++)
query.bindValue(i, lstParameter[i]);
return query.exec();
} QString SqliteUtil::ExecuteString(const QString& strQuery)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.exec();
QString temp;
while(query.next())
{
temp = query.value().toString();
}
return temp;
} void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
p_queryModel->setQuery(strQuery, m_db);
} void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
QList<QVariant> lstParameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
for(int i = ; i < lstParameter.count(); i++)
query.bindValue(i, lstParameter[i]);
p_queryModel->setQuery(query);
} void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
QVariant Parameter)
{
if(!m_db.isOpen())
{
createConnection(m_strDatabase);
}
QSqlQuery query(m_db);
query.prepare(strQuery);
query.bindValue(, Parameter);
p_queryModel->setQuery(query);
}

Qt Sqlite封装类SqliteUtil的更多相关文章

  1. Qt Sqlite qwt 发布过程中碰到的问题runtime error

    qt版本:4.8.0 qwt版本:6.1.2 使用dll show检测缺少的dll,或者笨一点的方法,点击运行差什么找什么放进去: 左上显示exe调用哪些dll,右边是dll又再次调用啦哪些dll: ...

  2. Qt&plus;SQLite数据加密的一种思路(内存数据库)

    了解Qt是比较早的,可是一直没有耐心去做一个练习.近期花了差不多两周时间做了次Qt开发练习,基本完成了Qt的入门,逃脱微软平台又迈出了几小步.Qt虽然是C++的,但开发应用是比较方便的,我觉得它在界面 ...

  3. &lbrack;QT&rsqb;&lbrack;SQLITE&rsqb;&lbrack;QTDEMO&rsqb;qt5&period;8&lowbar;sqlite数据库&lowbar;demo

    qt环境:5.8 数据库:sqlite //-------------------------------------- sqlite 日期 搜索 -------------------------- ...

  4. Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good

    使用SQLite存储数据时发现插入速度太慢,程序跑了将近五分钟才插入了不到三千条.上网查资料才发现,SQLite这种文件数据库与MySql机制不一样,每条事务都有打开和关闭文件的步骤,SQLite默认 ...

  5. 给 Qt sqlite 增加加密功能

    整合sqlite代码 开源的sqlite中没有实现加密的功能,所以如果需要加密功能,需要自己实现 sqlite3_keysqlite3_rekey 等相关函数 不过开源的 wxsqlite3中已经实现 ...

  6. Qt sqlite

    原文地址:http://blog.csdn.net/NewBee520/article/details/8247236QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQ ...

  7. &lbrack;QT&rsqb;&lbrack;SQLITE&rsqb;学习记录二 日期查询

    资料例程: 1.dongfangyu SQL时间段查询 : http://blog.csdn.net/dongfangyu/article/details/4607236 2.痕网 - henw  S ...

  8. &lbrack;QT&rsqb;&lbrack;SQLITE&rsqb;学习记录一 querry 查询

    使用 QSqlQuery query ; query("SELECT id FROM TABLE1 WHERE id = '2017'); 的到的结果集就是query本身,此时需要使用 qu ...

  9. Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)

    SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.例如:向数据库中插入100万条数 ...

随机推荐

  1. &lbrack;Ogre&rsqb;&lbrack;地形&rsqb;OgreTerrain分析以及使用

    Ogre 1.7.2中的地形教程 ○读者可以对照着Ogre1.7.2中的terrain.h源码进行阅读加深理解,蓝色部分均为源码 ○去除了一些具体场景比如添加mesh,设置setAmbientLigh ...

  2. Xaml代码格式设置

    Xaml格式化后属性分行显示的设置方法为 找到Tools->Text Editor->Xaml->Formatting->Spacing,选择Position each att ...

  3. java 反射与常用用法

    java通常是先有类再有对象,有对象我就可以调用方法或者属性. 反射其实是通过Class对象来调用类里面的方法.通过反射可以调用私有方法和私有属性.大部分框架都是运用反射原理. 如何获得Class对象 ...

  4. Git 使用记录

    在win7平台已经安装好了git的情况下: 1,Git 本地仓库建立与使用步骤: (2)新建立文件夹: $ mkdir learngit $ cd learngit $ pwd /Users/mich ...

  5. virtual box未卸载报&quot&semi;Invalid Drive&colon;F&colon;&bsol;&quot&semi;的解决方案

    =============================================== 20170417_第一次修改                       ccb_warlock === ...

  6. 三级级联查询省份名称和编码(保证名称不重复)的SQL语句

    三级级联查询省份名称和编码(保证名称不重复)的SQL语句 1.省份.地市和县级数据库表 2.SQL语句 SELECT DISTINCT t.`province_name`,t.`province_co ...

  7. Go实现基于WebSocket的弹幕服务

    拉模式和推模式 拉模式 1.数据更新频率低,则大多数请求是无效的 2.在线用户量多,则服务端的查询负载高 3.定时轮询拉取,实时性低 推模式 1.仅在数据更新时才需要推送 2.需要维护大量的在线长连接 ...

  8. python——虚拟环境之virtualenvwrapper-win(windows10&comma;64位)

    1 问题描述 当M个项目需要N个版本的python环境配置时(M>N)时,我们没有必要对每个项目都创建一个虚拟环境,只需要创建N个虚拟环境即可.这样节省了大量存储空间(特别是当M远大于N时).但 ...

  9. VS2017&plus;mysql5&period;7 连接数据库生成实体

    参考:https://www.cnblogs.com/RushPasser/p/5438334.html 下载:https://share.weiyun.com/5rM4FrG mysql-for-v ...

  10. What&&num;39&semi;s news in Visual Studio 2017

    文字总结: 1.高级智能提示  在属性列表中输入 M C即可查询属性中包含字母m\c的属性 2.更快的导航查询,在Go To All中输入任意查询的字符,可快速查到任何包含关键字的文件 3.代码智能分 ...