int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluated */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ );
Интерфейс sqlite3_exec() это обертка удобства вокруг sqlite3_prepare_v2(), sqlite3_step() и sqlite3_finalize(), который позволяет управлять многочисленными запросами SQL, не имея необходимости использовать много кода C.
Интерфейс sqlite3_exec() управляет нолем или большим количеством разделенных точкой с запятой SQL-операторов, переданных в UTF-8 в его 2-й аргумент в контексте соединения с базой данных, переданного как его 1-й аргумент. Если функция обратного вызова 3-го аргумента sqlite3_exec() не NULL, то это вызвано для каждой строки результата из оцененных SQL-операторов. 4-й аргумент sqlite3_exec() передается через 1-й аргумент каждого отзыва. Если указатель отзыва на sqlite3_exec() = NULL, то никакой отзыв никогда не вызывается, и строки результата проигнорированы.
Если ошибка происходит, оценивая SQL-операторы, переданные в sqlite3_exec(), то выполнение текущего запроса остановлено и последующие запросы пропущены. Если 5-м параметром sqlite3_exec() не является NULL, любое сообщение об ошибке написано в память, полученную из sqlite3_malloc(), и переданное назад через 5-й параметр. Чтобы избежать утечек памяти, приложение должно вызвать sqlite3_free() на последовательностях сообщения об ошибке, возвращенных через 5-й параметр sqlite3_exec() после того, как последовательность сообщения об ошибке больше не будет необходима. Если 5-й параметр sqlite3_exec() не NULL и никакие ошибки не происходят, то sqlite3_exec() устанавливает указатель в своем 5-м параметре в NULL перед возвращением.
Если отзыв sqlite3_exec() вернет отличное от нуля, sqlite3_exec() возвращает SQLITE_ABORT, не вызывая отзыв снова и не управляя никакими последующими SQL-операторами.
2-м аргументом sqlite3_exec() является количество колонок в результате. 3-м аргументом sqlite3_exec() является множество указателей на последовательности, полученные как будто от sqlite3_column_text(), один для каждой колонки. Если элемент ряда результата NULL, тогда соответствующий указатель строки для отзыва sqlite3_exec() = NULL. 4-й аргумент отзыва sqlite3_exec() множество указателей на последовательности, где каждый вход представляет название соответствующего столбца результата, как получено из sqlite3_column_name().
Если 2-й параметр sqlite3_exec() = NULL, указателем на пустую строку или указателем, который содержит только пробелы и/или комментарии SQL, то никакие SQL-операторы не оценены, и база данных не изменяется.
Ограничения: