qt下使用sqlite数据库存储二进制文件

前端之家收集整理的这篇文章主要介绍了qt下使用sqlite数据库存储二进制文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

qt支持小型数据库sqlite,并可存储二进制文件,类型为BLOB,可以将数据一次性存储,而不用频繁操作数据库

文件

#include <Qtsql/QsqlDatabase>

#include <Qtsql>

库:

Qt5sqld.lib

当然,如果要运行程序,还需要相应的dll库

Qt5sql.dll


1、h文件

#ifndef QMysqL_H
#define QMysqL_H


#include <Qtsql/QsqlDatabase>
#include <qtgui>
#include <Qtsql>

#define DATETIME_FORMAT ("yyyy-MM-dd HH:mm:ss")


// 数据库存储与查询类,ypchen,20160516
class QMysqL
{
private:
QMysqL();


public:
~QMysqL();
static QMysqL* self();
bool AddAdData(QDateTime dt,QByteArray data);
QMap<QString,QByteArray> QueryData();


private:
static QMysqL* m_instance;// 单例
QsqlDatabase m_db;// 数据库
};


#endif // QMysqL_H

2、cpp文件

QMysqL* QMysqL::m_instance = NULL; QMysqL::QMysqL() { m_db = QsqlDatabase::addDatabase("QsqlITE"); m_db.setDatabaseName("curve.db"); bool ret = m_db.open(); qDebug() << "Open db:" << ret << m_db.lastError(); QsqlQuery query;//以下执行相关QSL语句 ret = query.exec("CREATE TABLE IF NOT EXIST Curve(\ ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\ TIME TEXT NOT NULL,\ AD BLOB NOT NULL\ );"); qDebug() << "Create table:" << ret << m_db.lastError(); } QMysqL::~QMysqL() { m_db.close(); } // 单例 QMysqL* QMysqL::self() { if (m_instance == NULL) { m_instance = new QMysqL(); } return m_instance; } // 保存ad值到数据库 bool QMysqL::AddAdData(QDateTime dt,QByteArray data) { QsqlQuery query(m_db); QString strDt = dt.toString(DATETIME_FORMAT); QString strsql = "INSERT INTO Curve (TIME,AD) VALUES (?,?)"; query.prepare(strsql); query.bindValue(0,strDt); int size = data.size(); query.bindValue(1,data,Qsql::Binary); bool ret = query.exec(); qDebug() << "Add data:" << ret << m_db.lastError(); return ret; } // 查询数据库中的所有ad值 QMap<QString,QByteArray> QMysqL::QueryData() { QMap<QString,QByteArray> dbMap; QsqlQuery query(m_db); if (query.exec("SELECT * from Curve")) { while (query.next()) { QString strDt; QByteArray data; strDt = query.value(1).toString(); data = query.value(2).toByteArray(); int len = data.size(); dbMap[strDt] = data; } } qDebug() << "Query data:" << m_db.lastError(); return dbMap; }

猜你在找的Sqlite相关文章