void sqlite3_progress_handler(sqlite3 *,int,int(*)(void *),void *);
sqlite3_progress_handler(D,N,X,P)接口导致在对数据库连接D的sqlite3_exec(),sqlite3_step()和sqlite3_get_table()进行长时间运行的调用期间,周期性地调用回调函数X。 此接口的示例用法是在大型查询期间保持GUI更新。
参数P作为唯一参数传递给回调函数X。参数N是在回调X的连续调用之间评估的虚拟机指令的近似数量 。如果N小于1,则禁用进度处理程序。
每个数据库连接一次只能定义一个进度处理程序 ;设置新的进度处理程序将取消旧的进度处理程序。将参数X设置为NULL将禁用进度处理程序。通过将N设置为小于1的值,也会禁用进度处理程序。
如果进度回调返回非零,则操作被中断。此功能可用于在GUI进度对话框上实现“取消”按钮。
进度处理程序回调不得做任何会修改调用进度处理程序的数据库连接的操作。请注意,在本段中,sqlite3_prepare_v2()和sqlite3_step()都修改了其数据库连接,以实现“修改”的含义。