小巧、快速、可靠。
三選一。

SQLite C 介面

低階資料庫檔案控制

int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);

sqlite3_file_control() 介面會直接呼叫與第二個參數所指定的特定資料庫關聯的 sqlite3_io_methods 物件的 xFileControl 方法。資料庫的名稱為主要資料庫的「main」、暫時資料庫的「temp」,或是使用 ATTACH SQL 命令新增的資料庫在 AS 關鍵字之後出現的名稱。可以使用 NULL 指標代替「main」來參考主要資料庫檔案。此例程的第三個和第四個參數會直接傳遞至 xFileControl 方法的第二個和第三個參數。 xFileControl 方法的返回值將成為此例程的返回值。

SQLite 核心會直接處理 sqlite3_file_control() 的一些操作碼,且永遠不會呼叫 sqlite3_io_methods.xFileControl 方法。操作參數值為 SQLITE_FCNTL_FILE_POINTER 時,會將指向底層 sqlite3_file 物件的指標寫入第四個參數所指向的空間。 SQLITE_FCNTL_JOURNAL_POINTER 的運作方式類似,不同之處在於它會傳回與日誌檔案關聯的 sqlite3_file 物件,而不是主要資料庫。 SQLITE_FCNTL_VFS_POINTER 操作碼會傳回指向檔案底層 sqlite3_vfs 物件的指標。 SQLITE_FCNTL_DATA_VERSION 會從分頁器傳回資料版本計數器。

如果第二個參數 (zDbName) 與任何已開啟的資料庫檔案的名稱都不相符,則會傳回 SQLITE_ERROR。此錯誤碼不會被記住,也不會被 sqlite3_errcode()sqlite3_errmsg() 回呼。底層的 xFileControl 方法也可能傳回 SQLITE_ERROR。無法區分不正確的 zDbName 與底層 xFileControl 方法傳回的 SQLITE_ERROR。

另請參閱:檔案控制操作碼

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