在网上找了很久关于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+SQLite数据加密的一种思路(内存数据库)

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

  3. [QT][SQLITE][QTDEMO]qt5.8_sqlite数据库_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. [QT][SQLITE]学习记录二 日期查询

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

  8. [QT][SQLITE]学习记录一 querry 查询

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

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

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

随机推荐

  1. JFrome 登陆/注册/回显/输出流小程序之二

  2. IDEA14下配置SVN

    本来以为是很简单的事情,没想到也浪费我有一会的时间,中间也出现了多多少少的问题. 1.在官网下载SVN,版本要为1.8,切忌不能1.9,否则会出错. 在安装SVN的时候,不能一路下一步,我们要安装命令 ...

  3. ACE的Socket初步

    Tcp通信过程一般为如下步骤: 服务器绑定端口,等待客户端连接. 客户端通过服务器的ip和服务器绑定的端口连接服务器. 服务器和客户端通过网络建立一条数据通路,通过这条数据通路进行数据交互. 常用AP ...

  4. dbm数据库

    所有版本的linux以及大多数的UNIX版本都随系统带有一个基本的.但却非常搞笑的数据存储历程集,他被称为dbm数据库.适用于存储比较静态的索引化数据库,即使用索引来存储可变长的数据结构,然后通过索引 ...

  5. 【行为型】Iterator模式

    迭代器模式提供一种方法顺序访问聚合对象中的各个元素,而又不需要暴露该聚合对象的内部表示.对于该模式,估计几乎所有的人都使用过,在此直接给出类结构图参考如下: 如前所述,迭代器模式的思想主要是:一能提供 ...

  6. Python环境配置及项目建立

    一.安装Python Python比较稳定的两个版本是Python 3.5和Python 2.7,我用的是Python 2.7,下载地址是:https://www.python.org/downloa ...

  7. Python展开一个嵌套的序列

    摘自<Python Cookbook> 4.6 任务 序列中的子序列可能是序列,子序列的子项仍有可能是序列,以此类推,则序列嵌套可以达到任意的深度.需要循环遍历一个序列,将其所有的子序列展 ...

  8. SAE、搜狐云景和百度云之初见

    近期有需求将我们的应用部署到公有云的服务平台上,于是找了几家公有云服务做了一下调研, 首先对比一下他们提供的功能: 功能 SAE 搜狐云景 百度云 版本控制工具 svn  GIT,和百度云的比起来,用 ...

  9. 解决xp下无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本Wi

    今天装 tortoisegit 的时候发现安装包不能使用.报错无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本Windows Installer服务的Window ...

  10. Xamarin for OSX – SetUp

    正常情况联网会失败 按照安装顺序进行安装(mono framework->java sdk-> android sdk->xamarin studio->xamarin.and ...