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() 的第五个参数不为 NULL,则任何错误消息都将写入从 sqlite3_malloc() 获得的内存中,并通过第五个参数传递回。为了避免内存泄漏,应用程序应该在不再需要错误消息字符串后,对通过 sqlite3_exec() 的第五个参数返回的错误消息字符串调用 sqlite3_free()。如果 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 语句,并且数据库不会更改。
限制