Как присвоить результат запроса переменной класса? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующий код. Приложение аварийно завершает работу, когда я присваиваю результат запроса переменной класса / объекта. Вылетает только тогда, когда я назначаю переменную класса / объекта. Когда я удаляю назначение, я вижу из qDebug() ожидаемого результата запроса QString type.

Нет предупреждения или выделения компилятором. Как я могу присвоить результат запроса переменной класса / объекта?

bool UpDateSRPDatabase::checkVersions(QString driver, QString dbPath, 
  QString softwareVersion )
   {

   const QString getDatabaseVersion="SELECT value FROM Configuration";
   QString dbVersion;
   db = QSqlDatabase::addDatabase(driver);//
   db.setDatabaseName(dbPath);
   qDebug()<<"Data base is :"<<dbPath;

   if( db.open())
    {
      QSqlQuery query(getDatabaseVersion, db);
      query.exec();
      while (query.next())
        {
         dbVersion = query.value(0).toString();
         qDebug()<<"Database version is: "<<dbVersion;
         qDebug()<<"softwareVersion is: "<<softwareVersion;
        }
    db.close();
    }
   this->_dbVersion=dbVersion; //Crashes here
  if(dbVersion==softwareVersion)
  {
    return  true;
  }
  return  false;
}

1 Ответ

0 голосов
/ 23 мая 2019

Ваш

class UpDateSRPDatabase 

объект "this" поврежден, ИМХО, вы должны выполнить раунд профилирования с помощью valgrind, cleany или любого другого валидатора памяти. Это даст вам понять, где происходит повреждение памяти, конечно же, повреждение не видно в этом фрагменте кода, и оно внедряется из какого-то другого места в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...