我的问题与2010年的this问题非常相似,除了一件事:
我的代码未在任何地方设置setForwardOnly(true)
。
这是:
QSqlQuery query(this->query);
while (query.next()) {
for (size_t i = 0; i < 15; i++)
{
tmp.append(query.value(i).toString());
}
this->out.append(tmp);
tmp.clear();
} <- exception here
我的代码没有写出容器边界,我已经三次检查了。
无论如何,我得到了这个例外:
然而,查询正在后台运行,但这个烦人的窗口会导致用户体验不佳。
任何人都可以解释我应该怎样做才能消除此异常的原因?
这是最小的例子:
#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlDriver>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QSqlRecord rec;
QVector<QStringList> out;
QStringList tmp;
QSqlDriver *drv;
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("MYODBCSRC");
QString table_name = "LIBRARY.TABLE";
QString myquery = "select * from LIBRARY.TABLE";
if(db.open("LOGIN","PASSWORD"))
{
drv = db.driver();
rec =drv->record(table_name);
qint64 outputRowCount = rec.count();
QSqlQuery query(myquery);
while (query.next()) {
for (size_t i = 0; i < outputRowCount; i++)
{
tmp.append(query.value(i).toString());
}
out.append(tmp);
tmp.clear();
}
}
return a.exec();
}
这是我的stacktrace:
1 QListData::size qlist.h 113 0x662a3651
2 QList<QString>::length qlist.h 343 0x11e9650
3 myproj::on_pushButton_4_clicked myproj.cpp 171 0x11e378f
4 myproj::qt_static_metacall moc_myproj.cpp 130 0x11f4dba
5 myproj::qt_metacall moc_myproj.cpp 188 0x11f4c8b
6 QMetaObject::metacall qmetaobject.cpp 302 0x6656c7d0
7 QMetaObject::activate qobject.cpp 3755 0x665a7e35
8 QMetaObject::activate qobject.cpp 3602 0x665a77d1
9 QAbstractButton::clicked moc_qabstractbutton.cpp 309 0x56ceeceb
10 QAbstractButtonPrivate::emitClicked qabstractbutton.cpp 413 0x56cf0587
11 QAbstractButtonPrivate::click qabstractbutton.cpp 405 0x56cefb1b
12 QAbstractButton::mouseReleaseEvent qabstractbutton.cpp 1010 0x56cef352
13 QWidget::event qwidget.cpp 8781 0x56bd7c8d
14 QAbstractButton::event qabstractbutton.cpp 967 0x56ceeec1
15 QPushButton::event qpushbutton.cpp 676 0x56dbe34b
16 QApplicationPrivate::notify_helper qapplication.cpp 3745 0x56b8a2db
17 QApplication::notify qapplication.cpp 3219 0x56b86ab8
18 QCoreApplication::notifyInternal2 qcoreapplication.cpp 988 0x66560ccc
19 QCoreApplication::sendSpontaneousEvent qcoreapplication.h 234 0x666890f8
20 QApplicationPrivate::sendMouseEvent qapplication.cpp 2713 0x56b8bf93