小巧. 快速. 可靠.
三选其二.

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()

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