使用C API获取SQLite语句的受影响行数,可以通过调用sqlite3_changes()函数来实现。
以下是一个简单的示例代码:
#include<sqlite3.h>
#include<stdio.h>
int main(int argc, char* argv[]) {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
} else {
fprintf(stderr, "Opened database successfully\n");
}
const char* sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
"VALUES (1, 'Paul', 32, 'California', 20000.00 );"
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
"VALUES (2, 'Allen', 25, 'Texas', 15000.00 );"
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)"
"VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );";
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
fprintf(stdout, "Records created successfully\n");
}
int nRows = sqlite3_changes(db);
printf("Number of rows affected: %d\n", nRows);
sqlite3_close(db);
return 0;
}
在这个示例中,我们首先打开一个名为"test.db"的SQLite数据库,然后执行一个包含多个INSERT语句的SQL字符串。接下来,我们调用sqlite3_changes()函数来获取受影响的行数,并将其打印到控制台上。最后,我们关闭数据库并返回。
需要注意的是,sqlite3_changes()函数只能用于获取最近一次执行的SQL语句所影响的行数,如果需要获取更多的详细信息,可以使用sqlite3_total_changes()函数来获取自数据库连接以来所有更改的总行数。
领取专属 10元无门槛券
手把手带您无忧上云