加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:30:53 所属栏目:百科 来源:网络整理
导读:qt支持小型数据库sqlite,并可存储二进制文件,类型为BLOB,可以将数据一次性存储,而不用频繁操作数据库。 头文件: #include QtSql/QSqlDatabase #include QtSql 库: Qt5Sqld.lib 当然,如果要运行程序,还需要相应的dll库 Qt5Sql.dll 1、h文件 #ifndef Q

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; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读