SqlDBHelper.cpp 3.3 KB

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