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

SQLite C 介面

查詢進度回呼 (Query Progress Callbacks)

void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);

sqlite3_progress_handler(D,N,X,P) 介面會在對資料庫連線 D 執行長時間的 sqlite3_step()sqlite3_prepare() 等類似呼叫期間,定期呼叫回呼函式 X。此介面的一個應用範例是在大型查詢期間保持 GUI 更新。

參數 P 會作為回呼函式 X 的唯一參數傳遞。參數 N 是連續呼叫回呼函式 X 之間評估的 虛擬機器指令 的大約數量。如果 N 小於 1,則進度處理器會被停用。

每個 資料庫連線 一次只能定義一個進度處理器;設定新的進度處理器會取消舊的進度處理器。將參數 X 設定為 NULL 會停用進度處理器。將 N 設定為小於 1 的值也會停用進度處理器。

如果進度回呼返回非零值,則操作會被中斷。此功能可用於在 GUI 進度對話方塊上實作「取消」按鈕。

進度處理器回呼不得執行任何會修改呼叫進度處理器的資料庫連線的操作。請注意,sqlite3_prepare_v2()sqlite3_step() 都會修改它們的資料庫連線,此段落中的「修改」即指此意。

進度處理器回呼原本只會從位元組碼引擎呼叫。它仍然可能在 sqlite3_prepare() 等類似函式期間被呼叫,因為這些常式可能會強制重新剖析結構描述,這涉及執行位元組碼引擎。但是,從 SQLite 3.41.0 版開始,在分析和產生複雜查詢的程式碼時,也可能直接從 sqlite3_prepare() 呼叫進度處理器回呼。

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