小巧、快速、可靠。
三选其二。

SQLite C 接口

加载扩展

int sqlite3_load_extension(
  sqlite3 *db,          /* Load the extension into this database connection */
  const char *zFile,    /* Name of the shared library containing extension */
  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
  char **pzErrMsg       /* Put error message here if not 0 */
);

此接口从指定文件加载 SQLite 扩展库。

sqlite3_load_extension() 接口尝试加载包含在文件 zFile 中的 SQLite 扩展 库。如果无法直接加载文件,将尝试使用各种操作系统特定的扩展进行加载。例如,如果无法加载“samplelib”,则可能还会尝试加载“samplelib.so”、“samplelib.dylib”或“samplelib.dll”等名称。

入口点为 zProc。zProc 可以为 0,在这种情况下,SQLite 将尝试自行找到一个入口点名称。它首先尝试“sqlite3_extension_init”。如果这不起作用,它将构建一个名称“sqlite3_X_init”,其中 X 由文件名从最后一个“/”到第一个“.”之间所有 ASCII 字母字符的对应小写字母组成,并省略任何初始的“lib”。sqlite3_load_extension() 接口在成功时返回 SQLITE_OK,如果出现错误则返回 SQLITE_ERROR。如果发生错误并且 pzErrMsg 不为 0,则 sqlite3_load_extension() 接口将尝试用从 sqlite3_malloc() 获取的内存中存储的错误消息文本填充 *pzErrMsg。调用函数应通过调用 sqlite3_free() 来释放此内存。

必须使用 sqlite3_enable_load_extension()sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,1,NULL) 在调用此 API 之前启用扩展加载,否则将返回错误。

安全警告:建议使用 SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 方法仅启用此接口。应避免使用 sqlite3_enable_load_extension() 接口。这将使 SQL 函数 load_extension() 保持禁用状态,并防止 SQL 注入使攻击者访问扩展加载功能。

另请参阅 load_extension() SQL 函数

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