小巧、快速、可靠。
三者选其二。

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。

另请参阅 对象常量函数 的列表。