Small. Fast. Reliable.
Choose any three.

SQLite C接口

加载扩展

int sqlite3_load_extension(
  sqlite3 * db,/ *将扩展名加载到该数据库连接中* /
  const char * zFile,/ *包含扩展名* /的共享库的名称
  const char * zProc,/ *入口点。如果0 * /则从zFile派生
  char ** pzErrMsg / *如果不为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函数

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