📜  sqllite 中影响了多少行 - SQL (1)

📅  最后修改于: 2023-12-03 15:35:07.723000             🧑  作者: Mango

SQLite中影响了多少行

在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语句所影响的行数,多次调用该函数只会返回第一次调用的结果。
  • 对于SELECT语句,使用sqlite3_changes()函数来获取影响的行数会返回0,因为SELECT语句不会对表中的数据进行修改。
  • 对于多条SQL语句组合的情况,只能返回最后一条SQL语句所影响的行数,无法获取所有SQL语句的影响行数之和。