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()释放此内存。
在调用此 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 函数。
函数的列表。