小. 快速. 可靠.
选择任意三个.

SQLite C Interface

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()的第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()的第五个参数不为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语句,并且不会更改数据库.

Restrictions:

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

by  ICOPY.SITE