Load An Extension
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 函数。
另请参见对象,常量和函数的列表。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com