Small. Fast. Reliable.
Choose any three.

SQLite C接口

一站式查询执行界面

int sqlite3_exec(
  sqlite3 *,/ *一个打开的数据库* /
  const char * sql,/ *要求值的SQL * /
  int(* callback)(void *,int,char **,char **),/ *回调函数* /
  无效*,/ *回调的第一个参数* /
  char ** errmsg / *此处写的错误msg * /
);

sqlite3_exec()接口是sqlite3_prepare_v2()sqlite3_step()sqlite3_finalize()的便捷包装 ,它允许应用程序运行多个SQL语句而无需使用大量C代码。

sqlite3_exec()接口在作为第一个参数传入的数据库连接的上下文中,运行零个或多个UTF-8编码,以分号分隔的SQL语句,并将其传递给第二个参数。如果sqlite3_exec()的第3个参数的回调函数不为NULL,则将对从评估的SQL语句中出来的每个结果行调用该函数。sqlite3_exec()的第4个参数将中继到每个回调调用的第一个参数。如果指向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()回调的第4个参数是指向字符串的指针数组,其中每个条目表示从sqlite3_column_name()获得的相应结果列的名称。

如果sqlite3_exec()的第二个参数是NULL指针,指向空字符串的指针或仅包含空格和/或SQL注释的指针,则不会评估任何SQL语句,并且不会更改数据库。

限制:

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