sqlite3_filename sqlite3_create_filename( const char *zDatabase, const char *zJournal, const char *zWal, int nParam, const char **azParam ); void sqlite3_free_filename(sqlite3_filename);
這些介面提供給VFS shim實作使用,在此之外的環境中並無用途。
sqlite3_create_filename(D,J,W,N,P) 會配置記憶體來儲存資料庫檔案名稱 D 的版本,其中包含對應的日誌檔案 J 和 WAL 檔案 W,以及陣列 P 中的 N 個 URI 參數鍵值對。 sqlite3_create_filename(D,J,W,N,P) 的結果是一個指向資料庫檔案名稱的指標,可以安全地傳遞給像是
sqlite3_create_filename(D,J,W,N,P) 中的 P 參數應該是一個指向字串的 2*N 個指標的陣列。 這個陣列中的每一對指標都對應於查詢參數的鍵和值。 如果 N 為零,則 P 參數可以是 NULL 指標。 P 陣列中的 2*N 個指標都不能是 NULL 指標,且鍵指標不應為空字串。 sqlite3_create_filename(D,J,W,N,P) 的 D、J 或 W 參數都不能是 NULL 指標,但它們可以是空字串。
sqlite3_free_filename(Y) 函式會釋放先前從 sqlite3_create_filename() 取得的記憶體配置。 當 Y 是 NULL 指標時,呼叫 sqlite3_free_filename(Y) 是無害的空操作。
如果 sqlite3_free_filename(Y) 的 Y 參數不是 NULL 指標,也不是先前從 sqlite3_create_filename() 取得的指標,則可能會發生堆積損壞或區段錯誤等不良情況。 呼叫 sqlite3_free_filename(Y) 後,不應再次使用 Y 值。 這表示如果已使用 Y 呼叫 VFS 的 sqlite3_vfs.xOpen() 方法,則在呼叫 sqlite3_free_filename(Y) 之前,也應該呼叫對應的 [sqlite3_module.xClose()] 方法。