勇芳软件工作室.汉化:  SQLite3 API Functions > Database Connection >

sqlite3_interrupt

Previous pageReturn to chapter overviewNext page

描述

 

此函数会导致任何挂起的数据库操作中止并尽早返回。响应于用户操作(例如按“取消”)或Ctrl-C,通常会调用此函数,用户希望长时间查询操作立即停止。

 

C / C ++语法

 

void sqlite3_interrupt(sqlite3*);

 

PB语法

 

SUB sqlite3_interrupt (BYVAL hDbc AS DWORD)

 

参数

 

pDb

 

[in]数据库连接句柄。必须是从sqlite3_opensqlite3_open16sqlite3_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;

}