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()
我在 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()