描述
返回与数据库连接相关联的最近失败的sqlite3_* API调用的数字扩展结果代码。如果先前的API调用失败,但最近的API调用成功,则sqlite3_extended_errcode的返回值未定义。
C / C ++语法
int sqlite3_extended_errcode(sqlite3 *db); |
PB语法
FUNCTION sqlite3_extended_errcode ( _ BYVAL hDbc AS DWORD _ ) AS LONG |
参数
pDb
[in]数据库连接句柄。必须是从sqlite3_open,sqlite3_open16或sqlite3_open_v2获取的NULL指针或sqlite3对象指针。
返回值
扩展错误代码。
备注
默认情况下,扩展结果代码将被禁用以用于历史兼容性。要启用它们,请调用sqlite3_extended_result_codes功能。
当使用串行线程模式时,可能是在第一个错误的时间和对这些函数的调用之间的另一个线程上发生第二个错误。发生这种情况时,会报告第二个错误,因为这些功能总是报告最近的结果。为了避免这种情况,在所有调用这里列出的函数之后,每个线程可以通过调用sqlite3_mutex_enter(sqlite3_db_mutex(D))开始使用D并调用sqlite3_mutex_leave(sqlite3_db_mutex(D))来获得数据库连接D的独占使用。已经完成
如果一个函数与SQLITE_MISUSE失败,那意味着应用程序调用的函数不正确。在这种情况下,错误代码和消息可能被设置或可能不被设置。
C ++实现代码
/*
** Return the most recent error code generated by an SQLite function. If NULL is
** passed to this function, we assume a malloc() failed during sqlite3_open().
*/
SQLITE_API int sqlite3_extended_errcode(sqlite3 *db){
if( db && !sqlite3SafetyCheckSickOrOk(db) ){
return SQLITE_MISUSE_BKPT;
}
if( !db || db->mallocFailed ){
return SQLITE_NOMEM;
}
return db->errCode;
}