Parameters for sql execute
This commit is contained in:
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user