我在Qt程序中使用sqlite数据库。
QSqlDatabase db;
db = QsqlDatabase::addDatabase("QSQLITE");
当我无法从sqlite db.lastError()
函数获取数据时,总是返回相同的内容
QSqlError(-1, "Driver not Loaded", "Driver not loaded")
如何从Qt获得sqlite error codes?
upd1:
QSqlQuery query;
query.exec(QString("select NAME from PEOPLE where AGE=%1").arg(age));
if(query.next())
{
}
else
{
//check for sqlite error
}
答案 0 :(得分:5)
使用Qt API本身可以做的最好的方法是:
返回特定于数据库的错误编号,如果无法确定,则返回-1。
了解如何在驱动程序代码库本身中处理来自sqlite的错误代码:
您可以看到相应的QSqlError constructor用于将低级错误代码传递给它,作为您可以使用上述方法获得的最后一个参数。
正如您所看到的,它并没有类似地处理所有低级错误,但其余部分都有一个默认的开关案例。即使在后一种情况下,错误也会传递给构造函数。
您需要注意这一点,通常情况下,它无法确定确切的低级错误,在这种情况下,它将根据文档返回-1。
将这一点付诸实践,你会写下这样的东西:
QSqlQuery query;
query.exec(QString("select NAME from PEOPLE where AGE=%1").arg(age));
if (query.next())
{
} else {
qDebug() << "SqLite error:" << query.lastError().text() << ", SqLite error code:" << query.lastError().number();
}