增加了数据库下载的功能

This commit is contained in:
zjk
2025-02-13 09:34:12 +08:00
parent ed0d7f7fe0
commit f83f737a79
10 changed files with 436 additions and 19 deletions
+1 -9
View File
@@ -123,14 +123,7 @@ bool PowerManger::Iterate()
else
m_FsmThread.Stop();
// 数据库测试
PowerData data;
// data.id = 1;
data.timestamp = "2023-05-22 10:00:00";
data.voltage = 12.3 + rand() % 100 / 100.0;
data.current = 4.5 + rand() % 100 / 100.0;
data.power = 56.7 + rand() % 100 / 100.0;
data.temperature = 25.0 + rand() % 100 / 100.0;
m_db->insertPowerData(data.voltage, data.current, data.power, data.temperature);
//3. 输出报告
buildPowerSysReport();
//4. 打印错误信息
@@ -281,7 +274,6 @@ bool PowerManger::FsmLoop()
return true;
}
bool PowerManger::updatePmState()
{
+27 -1
View File
@@ -97,6 +97,32 @@ void SQLiteDB::insertStateData(StateData stateData) {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(m_db) << std::endl;
}
}
bool SQLiteDB::isDatabaseConnected(const std::string& path, const std::string& dbName) {
if (!m_db) return false;
// 尝试执行简单查询验证连接
const char* sql = "SELECT name FROM sqlite_master WHERE type='table';";
char* errMsg = nullptr;
int rc = sqlite3_exec(m_db, sql, nullptr, nullptr, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "Database connection check failed: " << errMsg << std::endl;
sqlite3_free(errMsg);
return false;
}
// 检查数据库路径和名称是否匹配
std::string fullPath = path + "/" + dbName;
const char* dbPath = sqlite3_db_filename(m_db, "main");
if (!dbPath || fullPath != dbPath) {
std::cerr << "Database path mismatch: expected " << fullPath << ", got " << (dbPath ? dbPath : "null") << std::endl;
return false;
}
return true;
}
std::vector<PowerData> SQLiteDB::getPowerData(int limit) {
std::vector<PowerData> data;
if (!m_db) return data;
@@ -124,4 +150,4 @@ std::vector<PowerData> SQLiteDB::getPowerData(int limit) {
}
return data;
}
}
+3
View File
@@ -35,6 +35,9 @@ public:
void insertStateData(StateData stateData);
std::vector<PowerData> getPowerData(int limit = 100);
//使用函数
bool isDatabaseConnected(const std::string& path, const std::string& dbName);
private:
sqlite3* m_db;
};