Small. Fast. Reliable.
Choose any three.

SQLite C接口

错误代码和消息

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调用的数字结果代码扩展结果代码。sqlite3_extended_errcode()接口是相同的,只是即使禁用了扩展结果代码,它也始终返回 扩展结果代码

sqlite3_errcode()和/或sqlite3_extended_errcode()返回的值可能随每个API调用而变化。除了某些接口,保证永远不会更改错误代码的值。保留错误代码的接口是:

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

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

当使用串行化线程模式时,可能是在第一个错误的时间与对这些接口的调用之间的另一个线程上发生了第二个错误。发生这种情况时,将报告第二个错误,因为这些接口始终报告最新结果。为了避免这种情况,每个线程都可以获取独占使用的数据库连接,通过调用d sqlite3_mutex_entersqlite3_db_mutex开始使用d和调用之前(d))sqlite3_mutex_leavesqlite3_db_mutex来完成这里列出的接口的所有调用后,(d))。

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

另请参见 对象常量函数的列表