我在我的Qt程序中使用sqlite数据库.
QSqlDatabase db;
db = QsqlDatabase::addDatabase("QSQLITE");
Run Code Online (Sandbox Code Playgroud)
当我无法从sqlite db.lastError()
函数获取数据时总是返回相同的东西
QSqlError(-1, "Driver not Loaded", "Driver not loaded")
Run Code Online (Sandbox Code Playgroud)
如何从Qt 获取sqlite错误代码?
upd1:
QSqlQuery query;
query.exec(QString("select NAME from PEOPLE where AGE=%1").arg(age));
if(query.next())
{
}
else
{
//check for sqlite error
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Qt API本身做的最好的方法是:
int QSqlError :: number()const
返回特定于数据库的错误号,如果无法确定,则返回-1.
了解如何在驱动程序代码库本身中处理来自sqlite的错误代码:
您可以看到相应的QSqlError构造函数用于传递低级错误代码,作为您可以使用上述方法获得的最后一个参数.
正如您所看到的,它并没有类似地处理所有低级错误,但其余部分有一个默认的开关案例.即使在后一种情况下,错误也会传递给构造函数.
您需要注意这一点,通常情况下,它无法确定确切的低级错误,在这种情况下,它将根据文档返回-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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8378 次 |
最近记录: |