我有以下代码。当我将查询结果分配给类/对象变量时,应用程序崩溃。仅当我分配给类/对象变量时,它才崩溃。当我删除作业时,从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;
}
答案 0 :(得分:0)
您的
class UpDateSRPDatabase
对象“ this”已损坏,恕我直言,您应该使用valgrind,purify或任何其他内存验证程序进行一轮分析。这将为您提供发生内存损坏的位置,当然在这段代码中看不到损坏,并且损坏是从代码中的其他位置注入的。