qt下使用sqlite数据库存储二进制文件
来源:互联网 发布:php.ini session 设置 编辑:程序博客网 时间:2024/06/05 18:42
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;
}
- qt下使用sqlite数据库存储二进制文件
- Qt使用Sqlite数据库
- 链接qt下sqlite数据库
- Qt中使用SQLITE数据库
- QT中使用数据库(SQLite)
- 使用SQLite数据库存储数据
- SQLite数据库存储数据使用
- 使用SQLite数据库存储数据
- Windows下qt使用sqlite
- Qt: Qt连接使用SQLite数据库示例
- QT:在Qt中使用SQLite数据库
- qt编程使用sqlite存储读取文件
- 解析QT 使用Sqlite存储读取文件
- 解析QT 使用Sqlite存储读取文件
- Qt中使用第三方的数据库(Sqlite)存储并读取文件本体
- Android下用Sqlite数据库存储数据
- WINCE下使用SQLite数据库
- WINCE下使用SQLite数据库
- 一些技术大牛的博客集锦(转)
- 你应该知道的浮点数基础知识
- C#—实验8.4、8.5和8.6
- PHP Json 解析
- Windows 服务
- qt下使用sqlite数据库存储二进制文件
- Postfix+Dovecot搭建MailServer配置说明
- react native安装笔记
- nginx url遇到的问题
- 白盒测试(一)
- Hadoop Failed to set permissions of path 错误处理
- PHP中获取函数调用时实际传递的参数信息
- jdk各个版本的新特性
- centos6.5搭建FTP服务器