Implemented database reconnect in RDSqlQuery::RDSqlQuery in 'lib/rddb.cpp'.

This commit is contained in:
Patrick Linstruth
2018-09-07 10:35:12 -07:00
parent 25b8853ec7
commit bae9e85bfb
2 changed files with 25 additions and 1 deletions

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