One-Step Query Execution Interface
一步查询执行界面
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,则不会调用任何回调,并忽略结果行。
如果在评估传递到 sqlite3_exec()中的 SQL 语句时发生错误,则当前语句的执行将停止并且随后的语句被跳过。如果 sqlite3_exec()的第5个参数不为 NULL,则会将任何错误消息写入从 sqlite3_malloc()获取的内存中,并通过第5个参数传回。为避免内存泄漏,应用程序应在不再需要错误消息字符串后,通过 sqlite3_exec()的第5个参数返回的错误消息字符串调用 sqlite3_free()。如果 sqlite3_exec()的第5个参数不为 NULL 并且没有发生错误,则 sqlite3_exec()会在返回之前将其第5个参数中的指针设置为 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()的第二个参数是空指针,指向空字符串的指针或仅包含空白和/或 SQL 注释的指针,则不会评估 SQL 语句,也不会更改数据库。
限制:
- 应用程序必须确保 sqlite3_exec()的第一个参数是有效且开放的数据库连接。
- 当 sqlite3_exec()运行时,应用程序不能关闭 sqlite3_exec()的第一个参数指定的数据库连接。
- 当 sqlite3_exec()运行时,应用程序不能修改传递给 sqlite3_exec()的第二个参数的 SQL 语句文本。