📅  最后修改于: 2023-12-03 15:35:07.723000             🧑  作者: Mango
在SQLite中,执行SQL语句会返回一个表示执行结果的数值。其中一个常见的数值就是指SQL语句所影响的行数。可以通过使用sqlite3_changes()
函数来获取最近一次SQL语句所影响的行数。
int sqlite3_changes(sqlite3*);
该函数接收一个sqlite3实例作为参数,并返回一个表示最近一次SQL语句所影响的行数的整数值。
#include <stdio.h>
#include <sqlite3.h>
int main(void) {
sqlite3 *db;
char *error = 0;
// 打开一个SQLite数据库
int rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
// 创建一张表并插入数据
char *sql = "CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);"
"INSERT INTO test VALUES (1, '张三');"
"INSERT INTO test VALUES (2, '李四');"
"INSERT INTO test VALUES (3, '王五');";
rc = sqlite3_exec(db, sql, 0, 0, &error);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL语句执行失败: %s\n", error);
sqlite3_free(error);
sqlite3_close(db);
return 1;
}
// 获取最近一次SQL语句所影响的行数
int num_rows = sqlite3_changes(db);
printf("SQL语句影响了 %d 行\n", num_rows);
// 关闭数据库
sqlite3_close(db);
return 0;
}
SQL语句影响了 3 行
sqlite3_changes()
函数只能返回最近一次SQL语句所影响的行数,多次调用该函数只会返回第一次调用的结果。sqlite3_changes()
函数来获取影响的行数会返回0,因为SELECT语句不会对表中的数据进行修改。