84 lines
2.0 KiB
C++
84 lines
2.0 KiB
C++
//
|
|
// Created by Krad on 2021/10/11.
|
|
//
|
|
|
|
#include "SQLHelper.h"
|
|
#include <QSqlQuery>
|
|
#include <QSqlDatabase>
|
|
#include <QSqlQuery>
|
|
#include <QSqlRecord>
|
|
#include <qdebug.h>
|
|
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];
|
|
}
|
|
|
|
int SQLHelper::QueryCount(QString sql) {
|
|
QSqlQuery query(*defaultDatabase);
|
|
if (query.exec(sql))
|
|
{
|
|
query.last();
|
|
return query.at()+1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int SQLHelper::ExecuteNoQuery(QString sql) {
|
|
QSqlQuery query(*defaultDatabase);
|
|
qDebug()<<sql;
|
|
if (query.exec(sql))
|
|
{
|
|
return query.numRowsAffected();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void SQLHelper::Query(QString sql,QMap<QString,QVariant>& result) {
|
|
QSqlQuery query(*defaultDatabase);
|
|
if (query.exec(sql))
|
|
{
|
|
if(query.next())
|
|
{
|
|
for(int i=0; i<query.record().count(); i++)
|
|
{
|
|
result[query.record().fieldName(i)]=query.record().value(i);
|
|
}
|
|
}
|
|
}
|
|
}
|