描述
此函数会导致任何挂起的数据库操作中止并尽早返回。响应于用户操作(例如按“取消”)或Ctrl-C,通常会调用此函数,用户希望长时间查询操作立即停止。
C / C ++语法
void sqlite3_interrupt(sqlite3*); |
PB语法
SUB sqlite3_interrupt (BYVAL hDbc AS DWORD) |
参数
pDb
[in]数据库连接句柄。必须是从sqlite3_open,sqlite3_open16或sqlite3_open_v2获取的NULL指针或sqlite3对象指针。
返回值
无返回值。
备注
从与当前运行数据库操作的线程不同的线程调用此函数是安全的。但是在sqlite3_interrupt返回之前关闭或可能关闭的数据库连接调用此函数是不安全的。
如果一个SQL操作在sqlite3_interrupt被调用的时候几乎完成,那么它可能没有机会被中断,可能会继续完成。
中断的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_interrupt运行时关闭,那么可能会发生不好的事情。
C ++实现代码
/*
** Cause any pending operation to stop at its earliest opportunity.
*/
SQLITE_API void sqlite3_interrupt(sqlite3 *db){
db->u1.isInterrupted = 1;
}