New method for sql data query
This commit is contained in:
@@ -6,10 +6,11 @@
|
|||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <QSqlDatabase>
|
#include <QSqlDatabase>
|
||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
|
#include <QSqlError>
|
||||||
#include <QSqlRecord>
|
#include <QSqlRecord>
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
QSqlDatabase* SQLHelper::defaultDatabase= nullptr;
|
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() {
|
bool SQLHelper::Open() {
|
||||||
if (defaultDatabase) return true;
|
if (defaultDatabase) return true;
|
||||||
defaultDatabase= new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", "USCTDB"));
|
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) {
|
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);
|
CenterAlignSqlTableModel *model = new CenterAlignSqlTableModel(nullptr,*defaultDatabase);
|
||||||
model->setTable(tableName);
|
model->setTable(tableName);
|
||||||
(*cache)[tableName] = model;
|
(*cache)[tableName] = model;
|
||||||
return (*cache)[tableName];
|
return (QSqlTableModel*)(*cache)[tableName];
|
||||||
}
|
}
|
||||||
|
|
||||||
int SQLHelper::QueryCount(QString sql, QMap<QString,QVariant>* params) {
|
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;
|
class QSqlDatabase;
|
||||||
#include "CenterAlignSqlTableModel.h"
|
#include "CenterAlignSqlTableModel.h"
|
||||||
|
#include <QSqlQueryModel>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
|
||||||
@@ -19,10 +19,13 @@ public:
|
|||||||
static void QueryFirst(QString sql, QMap<QString,QVariant>& result, QMap<QString,QVariant>* params = nullptr);
|
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 QueryCount(QString sql, QMap<QString,QVariant>* params = nullptr);
|
||||||
static int ExecuteNoQuery(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);
|
static QSqlTableModel* getTable(const QString & tableName);
|
||||||
private:
|
private:
|
||||||
static QSqlDatabase* defaultDatabase;
|
static QSqlDatabase* defaultDatabase;
|
||||||
static QHash<QString,CenterAlignSqlTableModel*>* cache;
|
static QHash<QString,QSqlQueryModel*>* cache;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user