数据库连接配置

pull/4/head
huaijin 2 weeks ago
parent cddb551220
commit 59fdd22e16

@ -0,0 +1,15 @@
{
"files.associations": {
"complex": "cpp",
"bitset": "cpp",
"chrono": "cpp",
"algorithm": "cpp",
"variant": "cpp",
"string": "cpp",
"system_error": "cpp",
"fstream": "cpp",
"thread": "cpp",
"typeinfo": "cpp",
"qwidget": "cpp"
}
}

@ -0,0 +1,70 @@
{
"files.associations": {
"bitset": "cpp",
"chrono": "cpp",
"algorithm": "cpp",
"fstream": "cpp",
"deque": "cpp",
"list": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"system_error": "cpp",
"complex": "cpp",
"variant": "cpp",
"thread": "cpp",
"typeinfo": "cpp",
"qpushbutton": "cpp",
"condition_variable": "cpp",
"array": "cpp",
"string_view": "cpp",
"initializer_list": "cpp",
"utility": "cpp",
"optional": "cpp",
"istream": "cpp",
"ostream": "cpp",
"ratio": "cpp",
"functional": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"atomic": "cpp",
"bit": "cpp",
"cstdint": "cpp",
"map": "cpp",
"set": "cpp",
"exception": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"random": "cpp",
"future": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"cinttypes": "cpp",
"qmouseevent": "cpp",
"qpainter": "cpp",
"qdebug": "cpp",
"qcoreapplication": "cpp",
"qsqlerror": "cpp",
"qsqlquery": "cpp"
}
}

@ -24,6 +24,8 @@ SOURCES += \
src/main.cpp \ src/main.cpp \
src/core/database/UAVDatabase.cpp \ src/core/database/UAVDatabase.cpp \
src/core/database/DogDatabase.cpp \ src/core/database/DogDatabase.cpp \
src/core/database/DatabaseConfig.cpp \
src/core/database/DatabaseHelper.cpp \
src/ui/main/MainWindow.cpp \ src/ui/main/MainWindow.cpp \
src/ui/dialogs/DeviceDialog.cpp \ src/ui/dialogs/DeviceDialog.cpp \
src/ui/components/DeviceCard.cpp \ src/ui/components/DeviceCard.cpp \
@ -36,6 +38,8 @@ SOURCES += \
HEADERS += \ HEADERS += \
include/core/database/UAVDatabase.h \ include/core/database/UAVDatabase.h \
include/core/database/DogDatabase.h \ include/core/database/DogDatabase.h \
include/core/database/DatabaseConfig.h \
include/core/database/DatabaseHelper.h \
include/ui/main/MainWindow.h \ include/ui/main/MainWindow.h \
include/ui/dialogs/DeviceDialog.h \ include/ui/dialogs/DeviceDialog.h \
include/ui/components/DeviceCard.h \ include/ui/components/DeviceCard.h \

@ -0,0 +1,39 @@
# 战场探索系统数据库配置文件
# Database Configuration for BattlefieldExplorationSystem
#
# 修改此文件中的配置后,重启应用程序生效
# Restart the application after modifying this configuration file
[Database]
# 数据库服务器地址 (Database server host)
host=localhost
# 数据库端口 (Database port)
port=3306
# 数据库名称 (Database name)
databaseName=Client
# 数据库用户名 (Database username)
username=root
# 数据库密码 (Database password)
password=root
# 连接超时时间,单位毫秒 (Connection timeout in milliseconds)
connectionTimeout=30000
# 数据库驱动名称 (Database driver name)
driverName=QMYSQL
# 配置说明:
# 1. 如果你的MySQL用户名不是root请修改username字段
# 2. 如果你的MySQL密码不是root请修改password字段
# 3. 如果你的MySQL运行在不同的主机或端口请修改host和port字段
# 4. 如果你使用不同的数据库名称请修改databaseName字段
#
# Configuration Notes:
# 1. If your MySQL username is not 'root', modify the username field
# 2. If your MySQL password is not 'root', modify the password field
# 3. If your MySQL runs on different host or port, modify host and port fields
# 4. If you use different database name, modify databaseName field

@ -112,6 +112,7 @@ protected:
private: private:
QString m_deviceName; ///< 设备名称 QString m_deviceName; ///< 设备名称
QLabel *m_iconLabel; ///< 图标标签
QLabel *m_nameLabel; ///< 名称标签 QLabel *m_nameLabel; ///< 名称标签
QLabel *m_statusLabel; ///< 状态标签 QLabel *m_statusLabel; ///< 状态标签
bool m_isActive = false; ///< 是否选中状态 bool m_isActive = false; ///< 是否选中状态

@ -1,4 +1,5 @@
#include "core/database/DogDatabase.h" #include "core/database/DogDatabase.h"
#include "core/database/DatabaseConfig.h"
// 单例实例指针定义 // 单例实例指针定义
DogDatabase *DogDatabase::m_instance = nullptr; DogDatabase *DogDatabase::m_instance = nullptr;
@ -27,7 +28,8 @@ DogDatabase::DogDatabase()
//添加记录 //添加记录
bool DogDatabase::addDevice(const Dog &data) bool DogDatabase::addDevice(const Dog &data)
{ {
if(openDatabase("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(openDatabase(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
beginAddField("dogdatabase"); beginAddField("dogdatabase");
addField("id"); addField("id");
@ -62,8 +64,9 @@ Point DogDatabase::getDevicePosition(const QString &id)
Point position; Point position;
position.lon = 0; position.lon = 0;
position.lat = 0; position.lat = 0;
if(openDatabase("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(openDatabase(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
QSqlQuery query(m_sqlDatabase); QSqlQuery query(m_sqlDatabase);
@ -99,7 +102,8 @@ Point DogDatabase::getDevicePosition(const QString &id)
int DogDatabase::getDeviceState(const QString &id) int DogDatabase::getDeviceState(const QString &id)
{ {
int state = -1; int state = -1;
if(openDatabase("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(openDatabase(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
QSqlQuery query(m_sqlDatabase); QSqlQuery query(m_sqlDatabase);

@ -1,4 +1,5 @@
#include "core/database/UAVDatabase.h" #include "core/database/UAVDatabase.h"
#include "core/database/DatabaseConfig.h"
UAVDatabase *UAVDatabase::getInstance() UAVDatabase *UAVDatabase::getInstance()
{ {
@ -21,7 +22,8 @@ UAVDatabase::UAVDatabase()
//添加记录 //添加记录
bool UAVDatabase::add(const UAV &data) bool UAVDatabase::add(const UAV &data)
{ {
if(open("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(open(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
beginAddFiled("uavdatabase"); beginAddFiled("uavdatabase");
addFiled("id"); addFiled("id");
@ -56,8 +58,9 @@ Point UAVDatabase::ReturnUAVPosition(QString id)
Point position; Point position;
position.lon = 0; position.lon = 0;
position.lat = 0; position.lat = 0;
if(open("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(open(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
QSqlQuery query(m_sqlDb); QSqlQuery query(m_sqlDb);
@ -93,7 +96,8 @@ Point UAVDatabase::ReturnUAVPosition(QString id)
int UAVDatabase::giveInfo(QString id) int UAVDatabase::giveInfo(QString id)
{ {
int state = -1; int state = -1;
if(open("fly_land_database","root","hzk200407140238")) DatabaseConnectionInfo dbInfo = DatabaseConfig::getInstance()->getConnectionInfo();
if(open(dbInfo.databaseName, dbInfo.username, dbInfo.password))
{ {
QSqlQuery query(m_sqlDb); QSqlQuery query(m_sqlDb);

@ -8,6 +8,7 @@
#include "ui/components/DeviceCard.h" #include "ui/components/DeviceCard.h"
#include "utils/SystemLogger.h" #include "utils/SystemLogger.h"
#include "core/database/DatabaseHelper.h"
// Qt GUI头文件 // Qt GUI头文件
#include <QMouseEvent> #include <QMouseEvent>
@ -729,12 +730,7 @@ bool DeviceCard::updateDeviceStatusInDatabase(DeviceStatus status)
{ {
// 创建唯一的数据库连接名称(包含时间戳避免重复) // 创建唯一的数据库连接名称(包含时间戳避免重复)
QString connectionName = QString("DeviceCard_%1_%2").arg(m_deviceInfo.id).arg(QDateTime::currentMSecsSinceEpoch()); QString connectionName = QString("DeviceCard_%1_%2").arg(m_deviceInfo.id).arg(QDateTime::currentMSecsSinceEpoch());
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", connectionName); QSqlDatabase db = DatabaseHelper::createConnection(connectionName);
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for device status update:" << db.lastError().text(); qWarning() << "Failed to connect to database for device status update:" << db.lastError().text();

@ -8,6 +8,7 @@
#include "ui/components/DeviceListPanel.h" #include "ui/components/DeviceListPanel.h"
#include "utils/SystemLogger.h" #include "utils/SystemLogger.h"
#include "core/database/DatabaseHelper.h"
// Qt GUI头文件 // Qt GUI头文件
#include <QDebug> #include <QDebug>
@ -474,12 +475,7 @@ QList<DeviceInfo> DeviceListPanel::loadDevicesFromDatabase()
qDebug() << "Attempting to connect to unified devices database..."; qDebug() << "Attempting to connect to unified devices database...";
// 创建数据库连接 // 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "DeviceListPanel_Connection"); QSqlDatabase db = DatabaseHelper::createTempConnection("DeviceListPanel_Connection");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (db.open()) { if (db.open()) {
qDebug() << "Successfully connected to Client database"; qDebug() << "Successfully connected to Client database";
@ -554,12 +550,7 @@ bool DeviceListPanel::deleteDeviceFromDatabase(const QString &deviceId)
qDebug() << "Attempting to delete device from database:" << deviceId; qDebug() << "Attempting to delete device from database:" << deviceId;
// 创建数据库连接 // 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "DeviceListPanel_Delete_Connection"); QSqlDatabase db = DatabaseHelper::createTempConnection("DeviceListPanel_Delete_Connection");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
bool success = false; bool success = false;

@ -9,6 +9,7 @@
#include "ui/dialogs/DeviceDialog.h" #include "ui/dialogs/DeviceDialog.h"
#include "build/ui_DeviceDialog.h" #include "build/ui_DeviceDialog.h"
#include "utils/SystemLogger.h" #include "utils/SystemLogger.h"
#include "core/database/DatabaseHelper.h"
// Qt headers // Qt headers
#include <QMessageBox> #include <QMessageBox>
@ -156,12 +157,7 @@ void DeviceDialog::setDeviceInfo(const QString &deviceId, const QString &name, c
void DeviceDialog::loadOperationLogs(const QString &deviceId) void DeviceDialog::loadOperationLogs(const QString &deviceId)
{ {
// 连接数据库 // 连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "DeviceDialog_LogQuery"); QSqlDatabase db = DatabaseHelper::createTempConnection("DeviceDialog_LogQuery");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for operation logs:" << db.lastError().text(); qWarning() << "Failed to connect to database for operation logs:" << db.lastError().text();
@ -228,12 +224,7 @@ void DeviceDialog::refreshDeviceInfo()
} }
// 连接数据库 // 连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "DeviceDialog_Refresh"); QSqlDatabase db = DatabaseHelper::createTempConnection("DeviceDialog_Refresh");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for refresh:" << db.lastError().text(); qWarning() << "Failed to connect to database for refresh:" << db.lastError().text();
@ -573,12 +564,7 @@ void DeviceDialog::initializeOperationLogTable()
void DeviceDialog::logOperation(const QString &operation, const QString &operatorName) void DeviceDialog::logOperation(const QString &operation, const QString &operatorName)
{ {
// 记录操作到数据库 // 记录操作到数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "DeviceDialog_LogOperation"); QSqlDatabase db = DatabaseHelper::createTempConnection("DeviceDialog_LogOperation");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for logging operation:" << db.lastError().text(); qWarning() << "Failed to connect to database for logging operation:" << db.lastError().text();

@ -10,6 +10,7 @@
#include "build/ui_MainWindow.h" #include "build/ui_MainWindow.h"
#include "ui/dialogs/DeviceDialog.h" #include "ui/dialogs/DeviceDialog.h"
#include "utils/SystemLogger.h" #include "utils/SystemLogger.h"
#include "core/database/DatabaseHelper.h"
// Qt GUI头文件 // Qt GUI头文件
#include <QWebEngineView> #include <QWebEngineView>
@ -545,12 +546,7 @@ void MainWindow::onAddRobotClicked()
double defaultLatitude = 39.9; // 默认纬度 double defaultLatitude = 39.9; // 默认纬度
// 尝试从数据库获取配置的地图中心位置 // 尝试从数据库获取配置的地图中心位置
QSqlDatabase configDb = QSqlDatabase::addDatabase("QMYSQL", "TempConnection_Config_Robot"); QSqlDatabase configDb = DatabaseHelper::createTempConnection("TempConnection_Config_Robot");
configDb.setHostName("localhost");
configDb.setPort(3306);
configDb.setDatabaseName("Client");
configDb.setUserName("root");
configDb.setPassword("hzk200407140238");
if (configDb.open()) { if (configDb.open()) {
QSqlQuery configQuery(configDb); QSqlQuery configQuery(configDb);
@ -582,12 +578,7 @@ void MainWindow::onAddRobotClicked()
latitudeEdit->setToolTip(QString("默认地图中心纬度: %1°N").arg(defaultLatitude)); latitudeEdit->setToolTip(QString("默认地图中心纬度: %1°N").arg(defaultLatitude));
// 自动生成设备ID // 自动生成设备ID
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "TempConnection_DOG_ID_Add"); QSqlDatabase db = DatabaseHelper::createTempConnection("TempConnection_DOG_ID_Add");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
QString suggestedId = "DOG001"; QString suggestedId = "DOG001";
if (db.open()) { if (db.open()) {
@ -736,12 +727,7 @@ void MainWindow::onAddUAVClicked()
double defaultLatitude = 39.9; // 默认纬度 double defaultLatitude = 39.9; // 默认纬度
// 尝试从数据库获取配置的地图中心位置 // 尝试从数据库获取配置的地图中心位置
QSqlDatabase configDb = QSqlDatabase::addDatabase("QMYSQL", "TempConnection_Config"); QSqlDatabase configDb = DatabaseHelper::createTempConnection("TempConnection_Config");
configDb.setHostName("localhost");
configDb.setPort(3306);
configDb.setDatabaseName("Client");
configDb.setUserName("root");
configDb.setPassword("hzk200407140238");
if (configDb.open()) { if (configDb.open()) {
QSqlQuery configQuery(configDb); QSqlQuery configQuery(configDb);
@ -773,12 +759,7 @@ void MainWindow::onAddUAVClicked()
latitudeEdit->setToolTip(QString("默认地图中心纬度: %1°N").arg(defaultLatitude)); latitudeEdit->setToolTip(QString("默认地图中心纬度: %1°N").arg(defaultLatitude));
// 自动生成设备ID // 自动生成设备ID
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "TempConnection_UAV_ID"); QSqlDatabase db = DatabaseHelper::createTempConnection("TempConnection_UAV_ID");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
QString suggestedId = "UAV001"; QString suggestedId = "UAV001";
if (db.open()) { if (db.open()) {
@ -1029,12 +1010,7 @@ void MainWindow::onDeviceDetailsRequested(const QString &deviceId)
qDebug() << "Device details requested for:" << deviceId; qDebug() << "Device details requested for:" << deviceId;
// 连接数据库获取设备详细信息 // 连接数据库获取设备详细信息
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "MainWindow_DeviceDetails"); QSqlDatabase db = DatabaseHelper::createTempConnection("MainWindow_DeviceDetails");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for device details:" << db.lastError().text(); qWarning() << "Failed to connect to database for device details:" << db.lastError().text();
@ -1203,12 +1179,7 @@ void MainWindow::initializeDeviceMarkersOnMap()
bool MainWindow::addDeviceToDatabase(const QString &deviceId, const QString &name, const QString &type, const QString &ip, int port, int state, double longitude, double latitude) bool MainWindow::addDeviceToDatabase(const QString &deviceId, const QString &name, const QString &type, const QString &ip, int port, int state, double longitude, double latitude)
{ {
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "MainWindow_AddDevice_Connection"); QSqlDatabase db = DatabaseHelper::createTempConnection("MainWindow_AddDevice_Connection");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("Client");
db.setUserName("root");
db.setPassword("hzk200407140238");
if (!db.open()) { if (!db.open()) {
qWarning() << "Failed to connect to database for adding device:" << db.lastError().text(); qWarning() << "Failed to connect to database for adding device:" << db.lastError().text();

Binary file not shown.
Loading…
Cancel
Save