// sqlitereadwrite.h #ifndef SQLITERREADWRITE_H #define SQLITERREADWRITE_H #include #include #include #include #include #include #include #include #include #include #include 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 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 m_stopRequested{false}; // 性能统计 QElapsedTimer m_timer; // 连接名(确保多线程连接唯一性) QString m_connectionName; // 私有方法 QSqlDatabase createConnection(); // 具体操作 void processWithMultipleConnections(); void log(const QString &message); int idValue; QVector m_DataBaseList; bool m_isClosed = true; }; #endif // SQLITERREADWRITE_H