From 98b01b2e88a7eeac57513ed096c901061b069e14 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 29 Apr 2025 12:16:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=B2=20xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataBaseLMS/databaselms.cpp | 77 ++++++++++++++++++++--- DataBaseLMS/databaselms.h | 23 ++++--- DataBaseLMS/interfacedatabaselms.cpp | 2 +- TestServerLMS/resources/IcoServerRRJ.ico | Bin 0 -> 67646 bytes 4 files changed, 85 insertions(+), 17 deletions(-) create mode 100644 TestServerLMS/resources/IcoServerRRJ.ico diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index 02fa7d0..af0941b 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -21,14 +21,16 @@ bool DataBaseLMS::createConnection() { mtxAccess.lock(); - db = new QSqlDatabase(QSqlDatabase::addDatabase(dbType, connectionName)); - db->setDatabaseName(dbName); - db->setUserName(dbUserName); - db->setPassword(dbPassword); - db->setPort(5432); - //db->setHostName("192.168.100.87"); - //db->setHostName("192.168.100.248"); - db->setHostName("192.168.100.239"); + dbSettings = getDataBaseSettings(); + + dbSettings.connectionName = "Connection_" + dbSettings.dbName; + + db = new QSqlDatabase(QSqlDatabase::addDatabase(dbSettings.dbType, dbSettings.connectionName)); + db->setDatabaseName(dbSettings.dbName); + db->setUserName(dbSettings.dbUserName); + db->setPassword(dbSettings.dbPassword); + db->setHostName(dbSettings.dbHostName); + db->setPort(dbSettings.dbPort); bool res = db->open(); @@ -91,6 +93,63 @@ bool DataBaseLMS::isConnected() return false; } +DataBaseSettings DataBaseLMS::getDataBaseSettings() +{ + DataBaseSettings settings; + QFile file("config/settings.xml"); + if(!file.open(QIODevice::ReadOnly)) + { + QMessageBox::critical(nullptr, "Attention!", "The file could not be opened: config/settings.xml"); + return settings; + } + QXmlStreamReader xmlReader(&file); + + while (!xmlReader.atEnd()){ + + if(xmlReader.isStartElement()){ + + if(xmlReader.name() == "DataBaseSettings") + { + + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()){ + QString name = attr.name().toString(); + QString value = attr.value().toString(); + + if(name == "Type"){ + settings.dbType = value; + } + + if(name == "Name"){ + settings.dbName = value; + } + + if(name == "UserName"){ + settings.dbUserName = value; + } + + if(name == "Password"){ + settings.dbPassword = value; + } + + if(name == "HostName"){ + settings.dbHostName = value; + } + + if(name == "Port"){ + settings.dbPort = value.toInt(); + } + + } + } + } + + xmlReader.readNext(); + } + + file.close(); + return settings; +} + bool DataBaseLMS::transactionBegin() { /* @@ -1138,7 +1197,7 @@ bool DataBaseLMS::queryExec(QString queryStr, QSqlQuery *query) void DataBaseLMS::messageWarningErrorQuery(QString queryStr, QSqlQuery* query) { - QMessageBox::warning(nullptr, dbName, + QMessageBox::warning(nullptr, dbSettings.dbName, "Error query:\n" + query->lastError().text() + "\n" + "String of query:\n" + queryStr + "\n" + "Executed query:\n" + query->executedQuery()); diff --git a/DataBaseLMS/databaselms.h b/DataBaseLMS/databaselms.h index 29a2371..d0b258d 100644 --- a/DataBaseLMS/databaselms.h +++ b/DataBaseLMS/databaselms.h @@ -9,6 +9,18 @@ #include "group.h" #include "tasksAmmFim.h" +class DataBaseSettings +{ +public: + QString dbName = "DataBaseLMS"; + QString dbType = "QPSQL"; + QString connectionName = "Connection"; + QString dbUserName = "postgres"; + QString dbPassword = "12345678"; + QString dbHostName = ""; + int dbPort = 5432; +}; + class DataBaseLMS { public: @@ -83,6 +95,7 @@ protected: int updateTrainee(Trainee trainee); private: + DataBaseSettings getDataBaseSettings(); int queryExecInt(QString queryStr); QString queryExecString(QString queryStr); bool queryExecBool(QString queryStr); @@ -91,14 +104,10 @@ private: protected: QSqlDatabase* db; - const QString dbName = "DataBaseLMS"; - const QString connectionName = "Connection_DataBaseLMS"; -private: - bool transactionBegined; - const QString dbUserName = "postgres"; - const QString dbPassword = "12345678"; - const QString dbType = "QPSQL"; + DataBaseSettings dbSettings; +private: + bool transactionBegined; QMutex mtxAccess; }; diff --git a/DataBaseLMS/interfacedatabaselms.cpp b/DataBaseLMS/interfacedatabaselms.cpp index 0ed724b..9fc4abe 100644 --- a/DataBaseLMS/interfacedatabaselms.cpp +++ b/DataBaseLMS/interfacedatabaselms.cpp @@ -20,7 +20,7 @@ bool InterfaceDataBaseLMS::ConnectionToDB() { if(!createConnection()) { - QMessageBox::critical(nullptr, dbName, tr("Connection error: ") + db->lastError().text()); + QMessageBox::critical(nullptr, dbSettings.dbName, tr("Connection error: ") + db->lastError().text()); return false; } else diff --git a/TestServerLMS/resources/IcoServerRRJ.ico b/TestServerLMS/resources/IcoServerRRJ.ico new file mode 100644 index 0000000000000000000000000000000000000000..82dd2e8948f0d059944804b0f4b5cd3497cb6879 GIT binary patch literal 67646 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 D7@41b literal 0 HcmV?d00001