Parameters for sql execute

This commit is contained in:
Krad
2021-11-12 14:32:22 +08:00
parent 131fbb2e24
commit 1ffe4224ac
9 changed files with 191 additions and 28 deletions

View File

@@ -38,6 +38,14 @@ void SQLHelper::Close() {
}
}
void prepareSQL(QSqlQuery& query,QMap<QString,QVariant>* params)
{
if (!params) return;
for (auto key : params->keys())
{
query.bindValue(key,params->value(key));
}
}
QSqlTableModel* SQLHelper::getTable(const QString &tableName) {
@@ -48,8 +56,9 @@ QSqlTableModel* SQLHelper::getTable(const QString &tableName) {
return (*cache)[tableName];
}
int SQLHelper::QueryCount(QString sql) {
int SQLHelper::QueryCount(QString sql, QMap<QString,QVariant>* params) {
QSqlQuery query(*defaultDatabase);
prepareSQL(query, params);
if (query.exec(sql))
{
query.last();
@@ -58,19 +67,22 @@ int SQLHelper::QueryCount(QString sql) {
return 0;
}
int SQLHelper::ExecuteNoQuery(QString sql) {
int SQLHelper::ExecuteNoQuery(QString sql, QMap<QString,QVariant>* params) {
QSqlQuery query(*defaultDatabase);
qDebug()<<sql;
if (query.exec(sql))
query.prepare(sql);
prepareSQL(query, params);
if (query.exec())
{
return query.numRowsAffected();
}
return 0;
}
void SQLHelper::Query(QString sql,QMap<QString,QVariant>& result) {
void SQLHelper::QueryFirst(QString sql, QMap<QString,QVariant>& result, QMap<QString,QVariant>* params) {
QSqlQuery query(*defaultDatabase);
if (query.exec(sql))
query.prepare(sql);
prepareSQL(query, params);
if (query.exec())
{
if(query.next())
{

View File

@@ -16,9 +16,9 @@ public:
static bool Open();
static bool Open(QSqlDatabase* base);
static void Close();
static void Query(QString sql,QMap<QString,QVariant>& result);
static int QueryCount(QString sql);
static int ExecuteNoQuery(QString sql);
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 QSqlTableModel* getTable(const QString & tableName);
private:
static QSqlDatabase* defaultDatabase;