SqlDBHelper.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "SqlDBHelper.h"
  2. #include <QApplication>
  3. #include <QMessageBox>
  4. #include <QDebug>
  5. bool SqlDBHelper::configFinished = false;
  6. bool SqlDBHelper::configFinished2 = false;
  7. QSqlDatabase SqlDBHelper::getDatabase(SqlDBHelper::SqlDBType dbType, const QString &connectionName)
  8. {
  9. #if QFD2_APP
  10. QSettings config("config.ini", QSettings::IniFormat);
  11. qDebug() << "config.ini";
  12. #else
  13. QSettings config("clientConfig.ini", QSettings::IniFormat);
  14. qDebug() << "clientConfig.ini";
  15. #endif
  16. config.setIniCodec("UTF-8");
  17. dbType = static_cast<SqlDBHelper::SqlDBType>(config.value("USERCONFIG/DbType", "").toInt());
  18. switch (dbType) {
  19. case SqlDBHelper::SqlDBType::SQLITE3: {
  20. if (configFinished) {
  21. return SqlFactory::getInstance()->getDatabase();
  22. } else {
  23. QString databaseName = "./data/qfd.db";
  24. SqlFactory::DBSetting setting("QSQLITE", databaseName);
  25. configFinished = true;
  26. return SqlFactory::getInstance()->config(setting, connectionName)->getDatabase();
  27. }
  28. } break;
  29. case SqlDBHelper::SqlDBType::MYSQL: {
  30. if (configFinished) {
  31. return SqlFactory::getInstance()->getDatabase();
  32. } else {
  33. QSettings datasource("datasource.ini", QSettings::IniFormat);
  34. datasource.setIniCodec("UTF-8");
  35. QString url = datasource.value("DATASOURCE/url", "").toString();
  36. int port = datasource.value("DATASOURCE/port", "").toInt();
  37. QString username = datasource.value("DATASOURCE/username", "").toString();
  38. QString password = datasource.value("DATASOURCE/password", "").toString();
  39. QString database = datasource.value("DATASOURCE/database", "").toString();
  40. qDebug() << url << port << username << password << database;
  41. SqlFactory::DBSetting setting("QMYSQL", url, port, username, password, database);
  42. configFinished = true;
  43. return SqlFactory::getInstance()->config(setting, connectionName)->getDatabase();
  44. }
  45. } break;
  46. }
  47. QMessageBox::critical(nullptr, QObject::tr("数据库连接异常"), QObject::tr("请检查数据库配置文件是否正常"));
  48. QApplication::exec();
  49. return SqlFactory::getInstance()->getDatabase(nullptr);
  50. }
  51. QSqlDatabase SqlDBHelper::getDatabase2(SqlDBHelper::SqlDBType dbType, const QString &connectionName)
  52. {
  53. switch (dbType) {
  54. case SqlDBHelper::SqlDBType::SQLITE3: {
  55. if (configFinished2) {
  56. return SqlFactory::getInstance2()->getDatabase();
  57. } else {
  58. QString databaseName = "./nodeData/node.db";
  59. SqlFactory::DBSetting setting("QSQLITE", databaseName);
  60. configFinished2 = true;
  61. return SqlFactory::getInstance2()->config(setting, connectionName)->getDatabase();
  62. }
  63. } break;
  64. case SqlDBHelper::SqlDBType::MYSQL: {
  65. if (configFinished2) {
  66. return SqlFactory::getInstance2()->getDatabase();
  67. } else {
  68. SqlFactory::DBSetting setting("QMYSQL", "localhost", 3306, "root", "123456", "qfd");
  69. configFinished2 = true;
  70. return SqlFactory::getInstance2()->config(setting, connectionName)->getDatabase();
  71. }
  72. } break;
  73. }
  74. QMessageBox::critical(nullptr, QObject::tr("数据库连接异常"), QObject::tr("请检查数据库配置文件是否正常"));
  75. QApplication::exec();
  76. return SqlFactory::getInstance2()->getDatabase(nullptr);
  77. }