首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Load An Extension

代码语言:javascript
复制
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,其中X由文件名中最后一个“/”到第一个后面的“。”组成的所有 ASCII 字母字符的小写字母组成。并省略任何最初的 “lib”。 sqlite3_load_extension() 接口在成功时返回 SQLITE_OK,如果出现错误,则返回 SQLITE_ERROR。如果发生错误并且 pzErrMsg 不为0,那么 sqlite3_load_extension()接口将尝试使用从 sqlite3_malloc() 获取的内存中存储的错误消息文本填充 * pzErrMsg。调用函数应该通过调用 sqlite3_free() 来释放这个内存。

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

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

另请参阅 load_extension()SQL 函数。

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

扫码关注腾讯云开发者

领取腾讯云代金券