Интерфейс выполнения запросов в один шаг
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() выполняет ноль или более UTF-8 кодированных, разделённых точкой с запятой SQL-заявлений, переданных в качестве второго аргумента, в контексте подключения к базе данных переданного в качестве первого аргумента. Если функция обратного вызова в третьем аргументе sqlite3_exec() не равна NULL, она вызывается для каждой строки результата, полученной из обработанных SQL-заявлений. Четвёртый аргумент sqlite3_exec() передаётся в качестве первого аргумента каждого вызова обратного вызова. Если указатель на функцию обратного вызова в sqlite3_exec() равен NULL, обратный вызов никогда не вызывается, и строки результата игнорируются.
Если при обработке SQL-заявлений, переданных в sqlite3_exec(), произошла ошибка, выполнение текущего заявления прекращается, а последующие заявления пропускаются. Если пятый параметр sqlite3_exec() не равен NULL, любая сообщение об ошибке записывается в память, полученную из sqlite3_malloc(), и возвращается через пятый параметр. Чтобы избежать утечки памяти, приложение должно вызвать sqlite3_free() для строк сообщений об ошибках, возвращаемых через пятый параметр sqlite3_exec(), после того, как строка сообщения об ошибке больше не нужна. Если пятый параметр sqlite3_exec() не равен NULL и ошибок не произошло, sqlite3_exec() устанавливает указатель в пятом параметре в значение NULL перед возвратом.
Если функция обратного вызова sqlite3_exec() возвращает ненулевое значение, sqlite3_exec() возвращает SQLITE_ABORT, не вызывая обратный вызов ещё раз и не выполняя последующие SQL-заявления.
Второй аргумент функции обратного вызова sqlite3_exec() — количество столбцов в результате. Третий аргумент функции обратного вызова sqlite3_exec() — массив указателей на строки, полученные так, как будто они получены из sqlite3_column_text(), по одному для каждого столбца. Если элемент строки результата равен NULL, соответствующий указатель на строку для обратного вызова sqlite3_exec() также равен NULL. Четвёртый аргумент функции обратного вызова sqlite3_exec() — массив указателей на строки, где каждая запись представляет имя соответствующего столбца результата, полученное из sqlite3_column_name().
Если второй параметр sqlite3_exec() равен указателю NULL, указателю на пустую строку или указателю, содержащему только пробелы и/или SQL-комментарии, SQL-заявления не обрабатываются, и база данных не изменяется.
Ограничения:
- Приложение должно гарантировать, что первый параметр sqlite3_exec() является действительным и открытым подключением к базе данных.
- Приложение не должно закрывать подключение к базе данных, указанное в первом параметре sqlite3_exec(), во время выполнения sqlite3_exec().
- Приложение не должно изменять текст SQL-заявления, переданного во второй параметр sqlite3_exec(), во время выполнения sqlite3_exec().
- Приложение не должно обращаться по ссылкам к массивам или строковым указателям, переданным в качестве третьих и четвёртых параметров обратного вызова после возврата.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/exec.html