Files
GUI/src/db/SQLHelper.cpp

46 lines
1.3 KiB
C++
Raw Normal View History

//
// Created by Krad on 2021/10/11.
//
#include "SQLHelper.h"
#include <QSqlDatabase>
#include <QSqlQuery>
QSqlDatabase* SQLHelper::defaultDatabase= nullptr;
QHash<QString,CenterAlignSqlTableModel*>* SQLHelper::cache= new QHash<QString,CenterAlignSqlTableModel*>;
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];
}