在线文档教程
Sqlite
C界面 | C Interface

Error Codes And Messages

错误代码和消息

int sqlite3_errcode(sqlite3 *db int sqlite3_extended_errcode(sqlite3 *db const char *sqlite3_errmsg(sqlite3* const void *sqlite3_errmsg16(sqlite3* const char *sqlite3_errstr(int

如果与数据库连接D关联的最近的sqlite3_ * API调用失败,则sqlite3_errcode(D)接口将返回该API调用的数字结果代码或扩展结果代码。如果最近的API调用成功,则sqlite3_errcode()的返回值是未定义的。sqlite3_extended_errcode()接口是相同的,只是它总是返回扩展结果代码,即使扩展结果代码被禁用。

sqlite3_errmsg()和sqlite3_errmsg16()分别返回描述错误的英文文本,分别为UTF-8或UTF-16。保存错误消息字符串的内存在内部进行管理。应用程序不需要担心释放结果。但是,错误字符串可能会被其他SQLite接口函数的后续调用覆盖或解除分配。

sqlite3_errstr()接口返回描述结果代码的英文文本,如UTF-8。保存错误消息字符串的内存在内部进行管理,不能由应用程序释放。

在使用序列化线程模式时,可能会出现在第一个错误和对这些接口的调用之间的单独线程中发生第二个错误的情况。当发生这种情况时,会报告第二个错误,因为这些接口总是报告最新的结果。为避免这种情况,每个线程都可以在开始使用D之前调用sqlite3_mutex_enter(sqlite3_db_mutex(D))并在完成对此处列出的接口的所有调用之后调用sqlite3_mutex_leave(sqlite3_db_mutex(D))来获得数据库连接D的独占使用。

如果接口使用SQLITE_MISUSE失败,则意味着接口被应用程序错误地调用。在这种情况下,可能会或可能不会设置错误代码和消息。