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()释放此内存。

在调用此 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 函数

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