From bae9e85bfb92a58b2e6c86afb037c79ba858df42 Mon Sep 17 00:00:00 2001 From: Patrick Linstruth Date: Fri, 7 Sep 2018 10:35:12 -0700 Subject: [PATCH] Implemented database reconnect in RDSqlQuery::RDSqlQuery in 'lib/rddb.cpp'. --- ChangeLog | 3 +++ lib/rddb.cpp | 23 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ffc415af..6772adc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17625,3 +17625,6 @@ 2018-09-06 Fred Gleason * Added instructions for building 'rivwebcapi' under Visual Studio 2013 to 'INSTALL-WINDOWS'. +2018-09-07 Patrick Linstruth + Implemented database reconnect in RDSqlQuery::RDSqlQuery in + 'lib/rddb.cpp'. diff --git a/lib/rddb.cpp b/lib/rddb.cpp index 19237b2f..381e41c6 100644 --- a/lib/rddb.cpp +++ b/lib/rddb.cpp @@ -39,8 +39,29 @@ RDSqlQuery::RDSqlQuery (const QString &query,bool reconnect): QSqlQuery(query) { + QSqlDatabase db; + QString err; sql_columns=0; + if (!isActive() && reconnect) { + db = QSqlDatabase::database(); + + if (db.open()) { + clear(); + exec(query); + err=QObject::tr("DB connection re-established"); + } + else { + err=QObject::tr("Could not re-establish DB connection")+ + +"["+db.lastError().text()+"]"; + } + + fprintf(stderr,"%s\n",(const char *)err); +#ifndef WIN32 + syslog(LOG_ERR,(const char *)err); +#endif + } + if(isActive()) { QStringList f0=query.split(" "); if(f0[0].toLower()=="select") { @@ -58,7 +79,7 @@ RDSqlQuery::RDSqlQuery (const QString &query,bool reconnect): } } else { - QString err=QObject::tr("invalid SQL or failed DB connection")+ + err=QObject::tr("invalid SQL or failed DB connection")+ +"["+lastError().text()+"]: "+query; fprintf(stderr,"%s\n",(const char *)err);