From b6f8cbf4cbbbe0688f22cc1391d2a9a28e807f1c Mon Sep 17 00:00:00 2001 From: Ibnu Yahya Date: Wed, 25 Feb 2015 02:00:25 +0700 Subject: [PATCH] ADD: overloading driver function issue #153 --- src/ignsql.cpp | 30 ++++++++++++++++++++++++++++++ src/ignsql.h | 3 +++ 2 files changed, 33 insertions(+) diff --git a/src/ignsql.cpp b/src/ignsql.cpp index abf1b4a..6a8904d 100644 --- a/src/ignsql.cpp +++ b/src/ignsql.cpp @@ -28,6 +28,36 @@ bool ignsql::driver(const QString &drv, QString connect){ } +bool ignsql::driver(const QVariant &config){ + QVariantMap conf = json->jsonParser(config).toVariantMap(); + QString drv = conf["driver"].toString(); + QString host = conf["hostname"].toString(); + QString user = conf["username"].toString(); + QString pass = conf["password"].toString(); + QString dbase = conf["db"].toString(); + if(drv == "mysql"){ + this->db = QSqlDatabase::addDatabase("QMYSQL"); + this->db.setHostName(host); + this->db.setUserName(user); + this->db.setPassword(pass); + this->db.setDatabaseName(dbase); + return this->db.open(); + } + else if (drv == "sqlite2"){ + this->db = QSqlDatabase::addDatabase("QSQLITE2"); + this->db.setDatabaseName(dbase); + return this->db.open(); + } + else if (drv == "sqlite"){ + this->db = QSqlDatabase::addDatabase("QSQLITE"); + this->db.setDatabaseName(dbase); + return this->db.open(); + } + else{ + return false; + } +} + QVariant ignsql::query(const QString &qr){ bool status; int size; diff --git a/src/ignsql.h b/src/ignsql.h index 6031580..a8a403a 100644 --- a/src/ignsql.h +++ b/src/ignsql.h @@ -7,6 +7,7 @@ #include #include #include +#include "ignjson.h" class ignsql : public QObject { @@ -15,11 +16,13 @@ class ignsql : public QObject explicit ignsql(QObject *parent = 0); //QSqlQuery qry; QSqlDatabase db; + ignjson *json; signals: //void record_sig(bool err,const QByteArray& data); //void record(bool err,const QByteArray& data); public slots: bool driver(const QString& drv, QString connect); + bool driver(const QVariant &config); QVariant query(const QString& qr); //void record_slot(bool err,const QByteArray& data); };