sqlite.h


Retrollamadas de progreso de consulta

void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);

La función sqlite3_progress_handler(D,N,X,P) hace que la función de retrollamada X sea invocada periódicamente durante la ejecución de llamadas a sqlite3_exec(), sqlite3_step() y sqlite3_get_table() para la conexión de base de datos D. Un ejemplo de uso de esta función es permitir a un GUI actualizarse durante una consulta larga.

El parámetro P es pasado a través como único parámetro a la función de retrollamada X. El parámetro N es el número de instrucciones de máquina virtual que son evaluadas entre sucesivas invocaciones a la retrollamada X.

Sólo se puede definir un manipulador de progreso a la vez por conexión de base de datos; activar un nuevo manipulador de progreso cancela el viejo. Asignar NULL al parámetro X desactiva el manipulador de progreso. El manipulador de progreso también se desactiva asignando a N un valor menor de 1.

Si la retrollamada de progreso devuelve un valor no nulo, la operación se interrumpe. Esta característica se puede usar para implementar un botón de "Cancelar" en el cuadro de diálogo de progreso GUI.

La retrollamada de manipulador de progreso no debe hacer nada que pueda modificar la conexión de base de datos que invocó al manipulador de progreso. Hay que tener en cuenta que tanto sqlite3_prepare_v2() como sqlite3_step() modifican sus conexiones de base de datos en el sentido de "modificar" de este párrafo.