New method for sql data query
This commit is contained in:
@@ -6,10 +6,11 @@
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
#include <QSqlRecord>
|
||||
#include <qdebug.h>
|
||||
QSqlDatabase* SQLHelper::defaultDatabase= nullptr;
|
||||
QHash<QString,CenterAlignSqlTableModel*>* SQLHelper::cache= new QHash<QString,CenterAlignSqlTableModel*>;
|
||||
QHash<QString,QSqlQueryModel*>* SQLHelper::cache= new QHash<QString,QSqlQueryModel*>;
|
||||
bool SQLHelper::Open() {
|
||||
if (defaultDatabase) return true;
|
||||
defaultDatabase= new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", "USCTDB"));
|
||||
@@ -49,11 +50,11 @@ void prepareSQL(QSqlQuery& query,QMap<QString,QVariant>* params)
|
||||
|
||||
|
||||
QSqlTableModel* SQLHelper::getTable(const QString &tableName) {
|
||||
if (cache->contains(tableName)) return (*cache)[tableName];
|
||||
if (cache->contains(tableName)) return (QSqlTableModel*)(*cache)[tableName];
|
||||
CenterAlignSqlTableModel *model = new CenterAlignSqlTableModel(nullptr,*defaultDatabase);
|
||||
model->setTable(tableName);
|
||||
(*cache)[tableName] = model;
|
||||
return (*cache)[tableName];
|
||||
return (QSqlTableModel*)(*cache)[tableName];
|
||||
}
|
||||
|
||||
int SQLHelper::QueryCount(QString sql, QMap<QString,QVariant>* params) {
|
||||
@@ -93,3 +94,38 @@ void SQLHelper::QueryFirst(QString sql, QMap<QString,QVariant>& result, QMap<QSt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QSqlQueryModel *SQLHelper::QueryModel(QString queryName, QString sql, QMap<QString, QVariant> *params) {
|
||||
if (cache->contains(queryName)) return (*cache)[queryName];
|
||||
QSqlQueryModel* model = new QSqlQueryModel;
|
||||
|
||||
QSqlQuery query(*defaultDatabase);
|
||||
query.prepare(sql);
|
||||
prepareSQL(query, params);
|
||||
model->setQuery(query);
|
||||
if (model->lastError().isValid()){
|
||||
qDebug() << model->lastError();
|
||||
delete model;
|
||||
return nullptr;
|
||||
}
|
||||
(*cache)[queryName] = model;
|
||||
return model;
|
||||
}
|
||||
|
||||
QSqlQueryModel *SQLHelper::QueryModel(QString queryName) {
|
||||
if (cache->contains(queryName)) return (*cache)[queryName];
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void SQLHelper::QueryMap(QString sql, QMap<QString, QVariant> &result, QMap<QString, QVariant> *params) {
|
||||
QSqlQuery query(*defaultDatabase);
|
||||
query.prepare(sql);
|
||||
prepareSQL(query, params);
|
||||
if (query.exec())
|
||||
{
|
||||
while(query.next())
|
||||
{
|
||||
result[query.record().value(0).toString()]=query.record().value(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
class QSqlDatabase;
|
||||
#include "CenterAlignSqlTableModel.h"
|
||||
|
||||
#include <QSqlQueryModel>
|
||||
#include <QString>
|
||||
#include <QHash>
|
||||
|
||||
@@ -19,10 +19,13 @@ public:
|
||||
static void QueryFirst(QString sql, QMap<QString,QVariant>& result, QMap<QString,QVariant>* params = nullptr);
|
||||
static int QueryCount(QString sql, QMap<QString,QVariant>* params = nullptr);
|
||||
static int ExecuteNoQuery(QString sql, QMap<QString,QVariant>* params = nullptr);
|
||||
static void QueryMap(QString sql, QMap<QString,QVariant>& result, QMap<QString,QVariant>* params = nullptr);
|
||||
static QSqlQueryModel* QueryModel(QString queryName);
|
||||
static QSqlQueryModel* QueryModel(QString queryName, QString sql, QMap<QString,QVariant>* params = nullptr);
|
||||
static QSqlTableModel* getTable(const QString & tableName);
|
||||
private:
|
||||
static QSqlDatabase* defaultDatabase;
|
||||
static QHash<QString,CenterAlignSqlTableModel*>* cache;
|
||||
static QHash<QString,QSqlQueryModel*>* cache;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user