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

SQLite C 介面

中斷長時間執行的查詢

void sqlite3_interrupt(sqlite3*);
int sqlite3_is_interrupted(sqlite3*);

此函式會導致任何待處理的資料庫操作中止,並在第一時間返回。這個例程通常在使用者執行像是按下「取消」或 Ctrl-C 等動作時被呼叫,使用者希望長時間的查詢操作立即停止。

從與目前執行資料庫操作不同的執行緒呼叫此例程是安全的。但是,使用已關閉或可能在 sqlite3_interrupt() 返回之前關閉的資料庫連線呼叫此例程是不安全的。

如果在呼叫 sqlite3_interrupt() 時,SQL 操作已非常接近完成,則它可能沒有機會被中斷,並且可能繼續執行到完成。

被中斷的 SQL 操作將返回 SQLITE_INTERRUPT。如果被中斷的 SQL 操作是在明確事務內的 INSERT、UPDATE 或 DELETE,則整個事務將會自動回滾。

sqlite3_interrupt(D) 呼叫在資料庫連線 D 上所有目前正在執行的 SQL 陳述式完成之前都有效。在 sqlite3_interrupt() 呼叫之後以及執行中的陳述式計數達到零之前啟動的任何新的 SQL 陳述式,都會像它們在 sqlite3_interrupt() 呼叫之前就已經在執行一樣被中斷。執行中陳述式數量達到零後才開始的新的 SQL 陳述式不受 sqlite3_interrupt() 的影響。當沒有執行中的 SQL 陳述式時呼叫 sqlite3_interrupt(D) 是無效操作,並且對 sqlite3_interrupt() 呼叫返回之後啟動的 SQL 陳述式沒有影響。

可以使用 sqlite3_is_interrupted(D) 介面來判斷資料庫連線 D 目前是否有效中斷。如果目前有效中斷,則返回 1,否則返回 0。

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