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()获得)并返回适当的错误代码SQLite 在调用 xEntryPoint() 之前确保 *pzErrMsg 为 NULL。SQLite 将 在 xEntryPoint() 返回后在 *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()

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