QSqlDatabase lastError() returns 查询错误的空字符串

QSqlDatabase lastError() returns empty string for error in query

我在 Qt 中使用 SQLite 数据库编写简单代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS test(id, name)");
// ... adding data here
if(query.exec("SELECT * from test")) {
    while(query.next()) {
        qDebug() << query.value(0).toString();
    }
} else {
    qDebug() << "Error: " << db.lastError().text();
}

并注意到,如果我在查询中犯了一些错误(例如,拼错 table 名称 - "SELECT * from tesst"),我会得到空字符串而不是错误文本。那么,这是为什么呢?

原来,为了捕获查询错误,我应该使用 query.lastError().text() 而不是 db.lastError().text()