如何从Qt获取sqlite错误代码
How can I get sqlite error code from Qt
我在Qt程序中使用sqlite数据库。
QSqlDatabase db;
db = QsqlDatabase::addDatabase("QSQLITE");
当我无法从sqlitedb.lastError()
函数获取数据时,总是返回相同的
QSqlError(-1, "Driver not Loaded", "Driver not loaded")
如何从Qt获取sqlite错误代码?
更新1:
QSqlQuery query;
query.exec(QString("select NAME from PEOPLE where AGE=%1").arg(age));
if(query.next())
{
}
else
{
//check for sqlite error
}
使用Qt API本身的最佳方法是:
int QSqlError::number()const
返回数据库特定的错误号,如果无法确定,则返回-1。
查看如何在驱动程序代码库中处理sqlite中的错误代码:
https://qt.gitorious.org/qt/qtbase/source/eb5c0f4b1266702c016b032e281bb92a3a642da6:src/sql/drivers/sqlite/qsql_sqlite.cpp#L324
您可以看到,相应的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();
}
相关文章:
- 错误处理.将系统错误代码映射到泛型
- 为什么我在使用void函数时得到错误代码C2276
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 逻辑运算符上出现错误代码 a')'
- 'val' Arduino 错误代码之前的预期'('
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 根据 GetLastError 直接写入磁盘会导致错误代码 5
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 使用另一个函数调用一个函数(都在类中)时出现问题.没有错误代码C++
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- WSALookupServiceBegin() 上的错误代码 10022(无效的 arugment)
- C++ Schannel POST 400 错误代码错误请求
- openCL-创建子缓冲区返回错误代码13
- 更新了Runge-Kutta(RK4)C++错误代码中的二阶DE
- 获取有关使用未初始化内存的错误代码
- 排序程序的意外错误代码
- SQLite 错误代码:sqlite_step() 返回 5 (SQLITE_BUSY)
- 如何从Qt获取sqlite错误代码