小巧、快速、可靠。
選擇其中三項。

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 函式

另請參閱 物件常數函式 列表。