diff --git a/src/db/CenterAlignSqlTableModel.cpp b/src/db/CenterAlignSqlTableModel.cpp new file mode 100644 index 0000000..56ab31c --- /dev/null +++ b/src/db/CenterAlignSqlTableModel.cpp @@ -0,0 +1,5 @@ +// +// Created by Krad on 2021/10/11. +// + +#include "CenterAlignSqlTableModel.h" diff --git a/src/db/CenterAlignSqlTableModel.h b/src/db/CenterAlignSqlTableModel.h new file mode 100644 index 0000000..222fa57 --- /dev/null +++ b/src/db/CenterAlignSqlTableModel.h @@ -0,0 +1,25 @@ +// +// Created by Krad on 2021/10/11. +// + +#ifndef GUI_CENTERALIGNSQLTABLEMODEL_H +#define GUI_CENTERALIGNSQLTABLEMODEL_H + +#include +class CenterAlignSqlTableModel:public QSqlTableModel { + Q_OBJECT +public: + explicit CenterAlignSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()):QSqlTableModel(parent,db){}; + ~CenterAlignSqlTableModel(){}; +protected: + QVariant data(const QModelIndex& index, int role) const override { + if (index.column() >0 && role == Qt::TextAlignmentRole) { + return Qt::AlignCenter; + } else { + return QSqlTableModel::data(index,role); + } + } +}; + + +#endif //GUI_CENTERALIGNSQLTABLEMODEL_H diff --git a/src/db/SQLHelper.cpp b/src/db/SQLHelper.cpp new file mode 100644 index 0000000..f386e34 --- /dev/null +++ b/src/db/SQLHelper.cpp @@ -0,0 +1,45 @@ +// +// Created by Krad on 2021/10/11. +// + +#include "SQLHelper.h" + +#include +#include +QSqlDatabase* SQLHelper::defaultDatabase= nullptr; +QHash* SQLHelper::cache= new QHash; +bool SQLHelper::Open() { + if (defaultDatabase) return true; + defaultDatabase= new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", "USCTDB")); + defaultDatabase->setDatabaseName("USCTDB.data"); + return defaultDatabase->open(); +} + +bool SQLHelper::Open(QSqlDatabase *base) { + if(base && base != defaultDatabase){ + defaultDatabase = base; + } + return defaultDatabase->open(); +} + +void SQLHelper::Close() { + for(auto item : cache->values()) + { + delete item; + } + cache->clear(); + if(defaultDatabase->isValid() && defaultDatabase->isOpen()) + { + defaultDatabase->close(); + delete defaultDatabase; + defaultDatabase = nullptr; + } +} + +QSqlTableModel* SQLHelper::getTable(const QString &tableName) { + if (cache->contains(tableName)) return (*cache)[tableName]; + CenterAlignSqlTableModel *model = new CenterAlignSqlTableModel(nullptr,*defaultDatabase); + model->setTable(tableName); + (*cache)[tableName] = model; + return (*cache)[tableName]; +} diff --git a/src/db/SQLHelper.h b/src/db/SQLHelper.h new file mode 100644 index 0000000..1e15046 --- /dev/null +++ b/src/db/SQLHelper.h @@ -0,0 +1,25 @@ +// +// Created by Krad on 2021/10/11. +// + +#ifndef GUI_SQLHELPER_H +#define GUI_SQLHELPER_H + +class QSqlDatabase; +#include "CenterAlignSqlTableModel.h" +#include +#include + +class SQLHelper { +public: + static bool Open(); + static bool Open(QSqlDatabase* base); + static void Close(); + static QSqlTableModel* getTable(const QString & tableName); +private: + static QSqlDatabase* defaultDatabase; + static QHash* cache; +}; + + +#endif //GUI_SQLHELPER_H