Merge pull request #228 from deltecent/rddb

Implemented database reconnect in RDSqlQuery::RDSqlQuery in 'lib/rddb.cpp'
This commit is contained in:
Fred Gleason 2018-09-10 11:03:40 +00:00 committed by GitHub
commit ada526fbc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View File

@ -17625,3 +17625,6 @@
2018-09-06 Fred Gleason <fredg@paravelsystems.com>
* Added instructions for building 'rivwebcapi' under Visual Studio
2013 to 'INSTALL-WINDOWS'.
2018-09-07 Patrick Linstruth <patrick@deltecent.com>
Implemented database reconnect in RDSqlQuery::RDSqlQuery in
'lib/rddb.cpp'.

View File

@ -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);