首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C API获取SQLite语句的受影响行数

使用C API获取SQLite语句的受影响行数,可以通过调用sqlite3_changes()函数来实现。

以下是一个简单的示例代码:

代码语言:c
复制
#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()函数来获取自数据库连接以来所有更改的总行数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用python计算给定SQLite表的行数?

计算 SQLite 表中的行数是数据库管理中的常见任务。Python凭借其强大的库和对SQLite的支持,为此目的提供了无缝的工具。...要计算特定表中的行数,可以使用 SQL 中的 SELECT COUNT(*) 语句。...对查询的响应是一个元组,其中包含与表中的行数对应的单个成员。使用 result[0] 访问元组的第一个组件以获取行计数。...这允许您在不重复代码的情况下计算多个表中的行。 结论 使用 Python 计算 SQLite 表中的行数很简单。我们可以运行 SQL 查询并使用 sqlite3 模块或 pandas 库获取行数。...Python 提供了灵活有效的方法来与 SQLite 数据库进行通信。获取行计数很简单,无论是使用基本的 SQL 查询还是 pandas 功能。

48120

SQLite使用DETACH语句分离数据库的方式

SQLite 分离数据库 SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。...语法 SQLite 的 DETACH DATABASE 'Alias-Name' 语句的基本语法如下: DETACH DATABASE 'Alias-Name'; 在这里,'Alias-Name' 与您之前使用...ATTACH 语句附加数据库时所用到的别名相同。...实例 假设在前面的章节中您已经创建了一个数据库,并给它附加了 'test' 和 'currentDB',使用 .database 命令,我们可以看到: sqlite>.databases seq name...'currentDB' 从 testDB.db 中分离出来,如下所示: sqlite> DETACH DATABASE 'currentDB'; 现在,如果检查当前附加的数据库,您会发现,testDB.db

80310
  • sqlite3的C语言使用(一)

    前一天我讲了如何在VC中连接sqlite的库,从今天开始就分几个专题详细学习一下sqlite的一些API。...= SQLITE_OK) { printf("出错\n"); } return ; }     没有用新的API,一个sqlite3_exec就解决了问题。...调用过程必须负责在编译好的sql语句完成使用后使用sqlite3_finalize()删除它。    ...我们这个函数将sql语句编译成二进制字节码,以便后面的函数使用,编译好的东西就是stmt(第五个参数)。别问我为什么,我也不知道,但要执行sql来查询就要编译。...9.总结     这个题目写完了,我也介绍了一些常用的sqlite3的API,并没有想象中那么复杂。这是运行的截图,代码我不发了,如果想要可以联系我。 ?

    3.2K11

    sqlite3的C语言使用(二)

    前一天我列举了一些SQLite3库带的API,是SQLite的初级用法,今天我只讲一个API,但是用法会比前一次更好一点,便利一点。    ...*/ char **errmsg /* Error msg written here */ );     函数的作用就是执行sql语句,上次我们用这个函数执行的是...其实sqlite3_exec也能执行select语句,而且也能获得返回值,其中第三个参数(是个回调函数)起到了很大作用。     回调函数,就是在sqlite3_exec执行完成后自动被调用的函数。...如果select返回多行数据,每返回一行回调函数将执行一次。(其中sqlite3_exec只用调用一次)     我来说明一下回调函数的各个参数。...还有,前一次没有注意到的,sqlite3_exec的最后一个参数errmsg,以前都传入的是NULL,其实对于数据库来说,这个参数是很有作用的,它可以获取数据库出错信息。

    1.6K20

    sqlite3的C语言使用(三)

    上一篇     我们今天目标是写一个程序,把我们的字典文件pass.txt中的所有密码导入数据库中。我们的pass.txt中有93K多的数据行数,我们可以通过这个程序来测试sqlite的速度。...pass_text保存密码的明文。现在我介绍一个sql语句新的用法:使用通配符创建一个sql语句,然后用sqlite3_bind来给sql绑定数据。     ...再使用sqlite3_step执行它,就可以完成一个密码的插入工作。     下面是所有sqlite3_bind函数,从函数名大概就能知道是干什么的。...循环体完了就代表程序执行结束了,再使用sqlite3_finalize释放stmt句柄,sqlite3_close释放db连接,fclose关闭pass.txt文件。...这些操作都是写C程序的基本素质。

    1.6K10

    SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

    SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用 一、引言         在移动开发中,通常会用到一些小型的数据库进行数据管理。...二、SQLite常用语句     数据库存在的意义就在于其对数据的整合和管理,所以数据库的核心操作无非是对数据进行增,删,改,查得操作。...2.添加数据 使用下面的语句来进行数据行的添加操作: insert into class(num,name,count) values(2,"三年2班",58) 上面的语句代码可以简化成如下格式: insert...into 表名(键1,键2,···) values(值1,值2,···) 使用下面的语句进行数据列的添加,即添加一个新的键: alter table class add new text alter...        MesaSQLite是一款可视化的SQLite数据库编辑软件,使用十分方便。

    1.3K50

    bat中使用mshta调用vbs语句获取精准计算的日期

    大家好,又见面了,我是你们的朋友全栈君。 1.在bat中,获取指定的日期格式是比较麻烦的。因为cmd环境中,日期格式随着系统的时间格式设置而变化,通常系统默认的时间格式是“\’”符号作为连接符。...日期通常用在文件名上,比如日志的文件名。那么日期的格式就只能用“-”符号代替,更改系统日期格式会显得容易被外界因素改变,导致不稳定。当然也可以用bat中的set来进行替换,但这样费代码量。...,因为今天是17号: mshta代码段解析:NewDate变量值为减去1天后的日期,再把减去一天的日期传递给FmtDate变量。...NewDate=date+(-1):FmtDate NewDate的变量为:当日的日期减去1天然后传递给FmtDate。...Write FmtDate:close" 这个好理解,把FmtDate的结果输出给Bat中的for。 那么mshta调用来轻松解决bat中计算日期的方法就到这里啦。

    1.4K20

    C++中如何获取终端输出的行数,C++清除终端输出特定的一行内容

    单纯使用C++ 进行编程的时候,很多输出的调试信息都是直接在终端输出的,那么有的时候就会对终端输出的信息有一定的要求,那么如何进行定位终端输出的信息到底输出到了哪一行呢?...如何清除特定的一行终端内容呢? 对于上面的两个问题,相信也会有很多小伙伴有同样的烦恼,那么就让我们一起来解决这个麻烦吧。...} // 获取当前标准输出流位置 void getpos(int* x, int* y) { CONSOLE_SCREEN_BUFFER_INFO b; // 包含控制台屏幕缓冲区的信息...GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &b); // 获取标准输出句柄 *x = b.dwCursorPosition.X...(0, 2); // 回到坐标(0,2)位置进行标准输入输出 cin >> x; setpos(x, y); //回到记录的位置 return 0; } 通过上面的代码demo就能够实现终端清空某一特定行的内容的操作了

    4K40

    封装了 System.Data.SQLite 的数据库助手类

    System.Data.SQLite数据库通用类  针对对数据库的操作情况,分为以下几种情况: 创建数据库文件; 返回DataTable; 返回DataReader; 执行增删改,返回受影响的行数; 执行查询...,返回第一行第一列(通常用于带有行函数的查询,如SUM/AVG/COUNT等); 返回库中所有的表; 因为在System.Data.SQLite中不存在存储过程,所以所有的操作都是基于文本的SQL语句,...为了避免SQL注入,所以使用了参数化的SQL语句,这个数据库通用类如下: using System; using System.Data; using System.Data.Common; using...数据库执行增删改操作,返回受影响的行数。.../// /// 要执行的增删改的SQL语句 /// 执行增删改语句所需要的参数

    80830
    领券