Small. Fast. Reliable.
Choose any three.

SQLite C接口

自动加载静态链接的扩展

int sqlite3_auto_extension(void(* xEntryPoint)(void));

此接口导致为创建的每个新数据库连接调用xEntryPoint()函数。这里的想法是xEntryPoint()是静态链接的SQLite扩展的入口点,该扩展 将自动加载到所有新的数据库连接中。

即使函数原型显示xEntryPoint()不接受任何参数并返回void,SQLite仍使用三个参数调用xEntryPoint()并期望得到整数结果,就像入口点的签名一样,如下所示:

   int xEntryPoint(
     sqlite3 * db,
     const char ** pzErrMsg,
     const struct sqlite3_api_routines * pThunk
   );

如果xEntryPoint例程遇到错误,则应使* pzErrMsg指向适当的错误消息(从sqlite3_mprintf()获得),并返回适当的错误代码。在调用xEntryPoint()之前,SQLite确保* pzErrMsg为NULL。xEntryPoint()返回后,SQLite将在* pzErrMsg上调用 sqlite3_free()。如果任何xEntryPoint()返回错误,则引发xEntryPoint()的sqlite3_open()sqlite3_open16()sqlite3_open_v2()调用将失败。

使用已经在自动扩展列表上的入口X调用sqlite3_auto_extension(X)是无害的操作。对于每个打开的数据库连接,不会多次调用任何入口点。

另请参见:sqlite3_reset_auto_extension()sqlite3_cancel_auto_extension()

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