[英]Qt segmentation fault
我必须使用C ++和QT库开发一个社交网络模拟器。 我使用QODBC将用户存储到mysql数据库中。 当我运行我的应用程序时,我抛出了SIGSEGV错误。
在这里,我的函数抛出此错误:
QMutex userMutex;
userMutex.lock();
QListIterator<User*> i(users);
User* user;
QString sql = "insert into t_user (id, pseudo, name, firstname, birthdate) values ";
QString bindValue = QString::fromStdString("(?, ?, ?, ?, ?),").repeated(users.count());
sql.append(bindValue);
QSqlQuery query = QSqlQuery(Interface::getCnx());
query.prepare(sql);
while(i.hasNext())
{
user = i.next();
query.addBindValue(QString::number(user->getId()));
query.addBindValue(user->getPseudo());
query.addBindValue(user->getName());
query.addBindValue(user->getFirstname());
QString birthdate = QString::number(user->getBirthDate().year()) + "-" + QString::number(user->getBirthDate().month()) + "-" + QString::number(user->getBirthDate().day());
query.addBindValue(birthdate);
}
query.exec();
userMutex.unlock();
是“ query.exec()”行引发此错误。
看到什么地方了吗
首先,您在这里有一个逗号:
QString bindValue = QString::fromStdString("(?, ?, ?, ?, ?),").repeated(users.count());
因此,或者您“重复”字符串计数1次,然后添加“(?,?,?,?,?)”:
QString bindValue = QString::fromStdString("(?, ?, ?, ?, ?),").repeated(users.count() - 1);
bindValue "(?, ?, ?, ?, ?)";
或者,您必须删除字符串bindValue的最后一个字符。
我找到了答案...我想。 当我减小列表的大小时,此SIGSEGV错误已消失。 该列表之前包含1000个用户,但现在每次调用此方法仅包含800个用户。
谢谢你的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.