SqlDBHelper.cpp 3.3 KB

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