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() 的第 3 个参数的回调函数不为 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() 的第二个参数是 NULL 指针、指向空字符串的指针或仅包含空格和/或 SQL 注释的指针,则不会评估任何 SQL 语句并且不会更改数据库。

限制:

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