sqlite.h


Interfaz de ejecución de consulta en un paso

int sqlite3_exec(
  sqlite3*,                                  /* Una base de datos abierta */
  const char *sql,                           /* SQL a evaluar */
  int (*callback)(void*,int,char**,char**),  /* Función de retrollamada */
  void *,                                    /* Primer argumento para la retrollamada */
  char **errmsg                              /* Mensaje de error escrito aquí */
);

La función sqlite3_exec() es una envoltura alrededor de sqlite3_prepare_v2(), sqlite3_step() y sqlite3_finalize(), y permite a una aplicación ejecutar múltiples sentencias SQL sin tener que usar mucho código C.

La función sqlite3_exec() ejecuta cero o más sentencias SQL codificadas en UTF-8, separadas con punto y coma pasadas en el segundo argumento, en el contexto de la conexión de base de datos pasada como primer argumento. Si la función de retrollamada del tercer argumento a sqlite3_exec() no es NULL, entonces esta es invocada para cada fila de resultados obtenida de la evaluación de las sentencias SQL. El cuarto argumento de sqlite3_exec() es enviado como primer argumento en cada invocación de la retrollamada. Si el puntero a la retrollamada para sqlite3_exec() es NULL, ninguna retrollamada será invocada y las filas de resultados serán ignoradas.

Si se produce un error mientras se evalúan las sentencias SQL pasadas a sqlite3_exec(), la ejecución de la sentencia actual se detiene y las subsiguientes sentencias se saltan. Si el quinto parámetro de sqlite3_exec() no es NULL cualquier mensaje de error es escrito en la memoria obtenida desde sqlite3_malloc() y devuelto a través del quinto parámetro. Para evitar pérdidas de memoria, la aplicación debe invocar a sqlite3_free() si hay cadenas de mensajes de error retornadas mediante el quinto parámetro de sqlite3_exec() una vez que ese mensaje de error ya no sea necesario. Si el quinto parámetro de sqlite3_exec() no es NULL y no se producen errores, entonces sqlite3_exec() asigna NULL al puntero en el quinto parámetro antes de regresar.

Si una retrollamada sqlite3_exec() retorna un valor no nulo, la función sqlite3_exec() devuelve SQLITE_ABORT sin invocar la retrollamada de nuevo y sin ejecutar subsiguientes sentencias SQL.

El segundo argumento de la función de retrollamada sqlite3_exec() es el número de columnas en el resultado. El tercero es un array de punteros a cadenas obtenidas como si se hubiera usado sqlite3_column_text(), una por cada columna. Si un elemento de la fila de resultado es NULL entonces el puntero a la cadena correspondiente es un puntero NULL. El cuarto argumento a la función de retrollamada es un array de punteros a cadenas en la que cada entrada representa el nombre de la columna de resultado correspondiente como si hubiera sido obtenida mediante sqlite3_column_name().

Si el segundo parámetro de sqlite3_exec() es un puntero NULL, un puntero a una cadena vacía o un puntero que contiene sólo espacio en blanco y/o comentarios SQL, entonces no se evalúa ninguna sentencia SQL y la base de datos no se modifica.

Restricciones:

  • La aplicación debe asegurarse de que el primer parámetro para sqlite3_exec() es una conexión de base de datos válida y abierta.
  • La aplicación no debe cerrar la conexión de base de datos especificada por el primer parámetro de sqlite3_exec() mientras esa función esté en ejecución.
  • La aplicación no debe modificar el texto de la sentencia SQL pasado en el segundo parámetro de sqlite3_exec() mientras sqlite3_exec() se esté ejecutando.