小巧。快速。可靠。
三选二。

SQLite C 接口

一步查询执行接口

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 语句,并且数据库不会更改。

限制

另请参见 对象常量函数 列表。