sqlite3_exec
时间: 2023-06-30 12:18:10 浏览: 91
`sqlite3_exec` 是 SQLite 数据库引擎的一个函数,用于执行 SQL 命令。它的函数原型如下:
```c
int sqlite3_exec(
sqlite3* db, /* 数据库句柄 */
const char* sql, /* SQL 命令 */
int (*callback)(void*,int,char**,char**), /* 回调函数 */
void *data, /* 回调函数的上下文参数 */
char **errmsg /* 错误信息,如果有错误发生 */
);
```
`db` 参数是 SQLite 数据库句柄,`sql` 参数是需要执行的 SQL 命令,`callback` 参数是回调函数指针,`data` 参数是回调函数的上下文参数,`errmsg` 参数是一个指向字符指针的指针,用于存储错误信息(如果有错误发生)。
当执行 SQL 命令时,`sqlite3_exec` 函数会多次调用回调函数,每次调用传递一个结果行的数据。回调函数的函数原型为:
```c
int callback(void* data, int argc, char** argv, char** colName);
```
其中,`data` 参数为回调函数的上下文参数,`argc` 参数为结果行中的列数,`argv` 参数为指向结果行中每个列的指针数组,`colName` 参数为指向结果行中每个列的名称的指针数组。
例如,以下代码段展示了如何使用 `sqlite3_exec` 函数执行一条 SELECT 命令:
```c
sqlite3 *db;
int rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
// 打开数据库失败
} else {
char *errmsg;
// SELECT 命令的回调函数
int callback(void *data, int argc, char **argv, char **colName) {
for (int i = 0; i < argc; i++) {
printf("%s = %s\n", colName[i], argv[i] ? argv[i] : "NULL");
}
return 0;
}
// 执行 SELECT 命令
rc = sqlite3_exec(db, "SELECT * FROM mytable", callback, 0, &errmsg);
if (rc != SQLITE_OK) {
printf("SELECT failed: %s\n", errmsg);
sqlite3_free(errmsg);
}
sqlite3_close(db);
}
```
在使用完数据库之后,需要调用 `sqlite3_close` 函数关闭数据库。
阅读全文