EnergySpectrumAnalyer/src/GvfToCsv/sqliteread.h
2026-05-25 18:24:55 +08:00

90 lines
1.7 KiB
C++

// sqlitereadwrite.h
#ifndef SQLITERREADWRITE_H
#define SQLITERREADWRITE_H
#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QThread>
#include <QMutex>
#include <QAtomicInteger>
#include <QElapsedTimer>
#include <QDebug>
#include <QDir>
#include <QCoreApplication>
struct DataBaseStruct
{
int id;//ID
int curdevconfigindex;
int orgdevconfigindex;
int icr;
int datanum;
int tick;
QByteArray data;
QString reserve;
};
class SQLiteReadWrite : public QObject
{
Q_OBJECT
public:
explicit SQLiteReadWrite(QObject *parent = nullptr);
~SQLiteReadWrite();
bool openDatabase(const QString &dbPath);
void closeDatabase();
// 边读边写操作
void startReadWriteOperation();
void stopOperation();
void setIdValue(int value);
QVector<DataBaseStruct> DataBaseList() const;
signals:
void progressUpdated(int percent, qint64 processed, qint64 total);
void operationCompleted(bool success, const QString &message);
void logMessage(const QString &message);
void emitReadId(int readId);
void emitStopTime();
private slots:
void processReadWrite();
private:
// 数据库连接管理
QSqlDatabase m_database;
QString m_dbPath;
// 线程安全
mutable QMutex m_mutex;
QAtomicInteger<bool> m_stopRequested{false};
// 性能统计
QElapsedTimer m_timer;
// 连接名(确保多线程连接唯一性)
QString m_connectionName;
// 私有方法
QSqlDatabase createConnection();
// 具体操作
void processWithMultipleConnections();
void log(const QString &message);
int idValue;
QVector<DataBaseStruct> m_DataBaseList;
bool m_isClosed = true;
};
#endif // SQLITERREADWRITE_H