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

SQLite C 介面

存放暫存檔案的資料夾名稱

SQLITE_EXTERN char *sqlite3_temp_directory;

如果將此全域變數指向一個字串,該字串是資料夾(也就是目錄)的名稱,則在使用內建 虛擬檔案系統 (VFS) 時,SQLite 建立的所有暫存檔案都會放在該目錄中。如果此變數是 NULL 指標,則 SQLite 會搜尋合適的暫存檔案目錄。

強烈建議應用程式不要使用此全域變數。在 Windows Runtime (WinRT) 上,需要設定暫存資料夾。但對於所有其他平台,強烈建議應用程式不要讀取或寫入此變數。此全域變數是為了舊版應用程式的回溯相容性而存在的遺跡,在新專案中應避免使用。

在多個執行緒中同時讀取或修改此變數是不安全的。如果在另一個執行緒中同時使用資料庫連線,則讀取或修改此變數也是不安全的。此變數的設計目的是在程序初始化過程中,且在呼叫任何 SQLite 介面常式之前設定一次,之後保持不變。

temp_store_directory 指令可能會修改此變數,並使其指向從 sqlite3_malloc 獲得的記憶體。此外,temp_store_directory 指令 一直假設此變數指向的任何字串都保存在從 sqlite3_malloc 獲得的記憶體中,並且該指令可能會嘗試使用 sqlite3_free 釋放該記憶體。因此,如果直接修改此變數,則應將其設為 NULL 或使其指向從 sqlite3_malloc 獲得的記憶體,否則應避免使用 temp_store_directory 指令。除了 temp_store_directory 指令 要求的情況外,SQLite 不會釋放 sqlite3_temp_directory 指向的記憶體。如果應用程式想要釋放該記憶體,則必須自行執行,並注意僅在所有 資料庫連線 物件都已銷毀後才能執行此操作。

Windows Runtime 使用者注意事項: 必須在呼叫 sqlite3_opensqlite3_open_v2 之前設定暫存目錄。否則,需要使用暫存檔案的各種功能可能會失敗。以下是如何使用 C++ 和 Windows Runtime 執行此操作的範例

LPCWSTR zPath = Windows::Storage::ApplicationData::Current->
      TemporaryFolder->Path->Data();
char zPathBuf[MAX_PATH + 1];
memset(zPathBuf, 0, sizeof(zPathBuf));
WideCharToMultiByte(CP_UTF8, 0, zPath, -1, zPathBuf, sizeof(zPathBuf),
      NULL, NULL);
sqlite3_temp_directory = sqlite3_mprintf("%s", zPathBuf);

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