如何将查询结果分配给类变量?

时间:2019-05-23 09:06:16

标签: c++ sql qt

我有以下代码。当我将查询结果分配给类/对象变量时,应用程序崩溃。仅当我分配给类/对象变量时,它才崩溃。当我删除作业时,从qDebug()中看到查询结果是预期的QString类型。

没有编译器警告或突出显示。如何将查询结果分配给类/对象变量?

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 :(得分:0)

您的

class UpDateSRPDatabase 

对象“ this”已损坏,恕我直言,您应该使用valgrind,purify或任何其他内存验证程序进行一轮分析。这将为您提供发生内存损坏的位置,当然在这段代码中看不到损坏,并且损坏是从代码中的其他位置注入的。