#ifndef SQLITEDB_H #define SQLITEDB_H #include #include #include #include "json/json.h" #include "ccuUdpMsg.h" #include "pmSysvariable.h" #include "driver.h" using namespace std; struct PowerData { double voltage; double current; double power; double temperature; }; struct StateData { int state_id; std::string state_name; std::string event; int event_id; int fault_code; std::string note; }; class SQLiteDB { public: SQLiteDB(const std::string& dbPath); ~SQLiteDB(); // 模板函数声明 template bool executeInsert(const char* sql, const T& data); template bool bindParameters(sqlite3_stmt* stmt, const T& data); // 数据库操作函数 bool createPowerDataTables(); bool createStateTables(); bool createDisCcuSysTables(); bool createDriversTables(string tableName); bool clearPowerData(); bool clearStateData(); // 插入数据函数 bool insertPowerData(const PowerData& powerData); bool insertStateData(StateData stateData,bool filter=true); bool insertCcuData(ccuState s); bool insertDisHighVolBusData(disHighVolBusState s); bool insertDisHighAVolBusData(disHighAVolBusState s); bool insertDisHighBVolBusData(disHighBVolBusState s); bool insertDisLowBusData(disLowBusState s); bool insertCcuSysCmd(ccuColCmd cmd); bool insertDisSysCmd(disHighVolBusCmd cmd); bool insertDisSysCmd(disHighAVolBusCmd cmd); bool insertDisSysCmd(disHighBVolBusCmd cmd); bool insertDisSysCmd(disLowBusCmd cmd); bool insertDriverTables(DriverTable driverTable,string tableName); bool insertDisCcuData(pmState s,bool filter=true);//由于信息同步原因,暂时不使用该函数 // 获取最新的状态数据 bool getStateData(StateData &stateData); bool getStateData(StateData &stateData,string &time); // 使用函数 bool isDatabaseConnected(const std::string& path, const std::string& dbName); std::vector getPowerData(int limit = 100); // 获取数据库状态函数 string getDBPatch(); // 获取数据库大小 long getDatabaseSize(); private: sqlite3* m_db; string m_dbPath; }; #endif // SQLITEDB_H