在程序中使用c获取sqlite表中的行数

时间:2018-03-22 07:04:15

标签: sqlite

如何在程序中使用c获取sqlite表中的行数?是仅通过运行“select * from table”?并递增变量?

  1. sqlQuery = "select count (*) from company;";
    rc = sqlite3_prepare_v2(db, sqlQuery, -1, &stmt, NULL);
    printf("prepare status for count : %d\n", rc);
    rowcount = sqlite3_step(stmt);
    
    1. sqlQuery = "select * from company;";
      rc = sqlite3_prepare_v2(db, sqlQuery, -1, &stmt, NULL);
      printf("prepare status for count : %d\n", rc);
      while (SQLITE_ROW == sqlite3_step(stmt)) {
         rowcount ++; 
      }
      

      我没有将行数计为1,

      但是当我表演2时,我确实得到了它。

1 个答案:

答案 0 :(得分:0)

sqlite3_step()函数不返回查询结果。如果结果集中有另一行,则返回SQLITE_ROW;如果没有,则返回SQLITE_DONE。如果发生了不好的事情,它也会返回错误代码。

sqlQuery = "select count(*) from company;";
rc = sqlite3_prepare_v2(db, sqlQuery, -1, &stmt, NULL);
if (rc != SQLITE_OK) {
  // error handling -> statement not prepared
}
rc = sqlite3_step(stmt);
if (rc != SQLITE_ROW) {
  // error handling -> no rows returned, or an error occurred
}
rowcount = sqlite3_column_int(stmt, 0);

要获取结果集中当前行的值,必须使用执行查询的预准备语句通过列索引访问它们。由于此查询中只有一列,因此0的索引用于结果中最左侧或唯一的列。并且,由于该列的值是整数,我们使用sqlite3_column_int()函数,该函数将值返回为32位整数。

对于大多数普通的数据库操作,您只需要使用SQLite C API中的一些函数。你应该真正阅读并吸收introduction。它将帮助您了解数据库操作的正常工作流程。