如何在程序中使用c获取sqlite表中的行数?是仅通过运行“select * from table”?并递增变量?
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);
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时,我确实得到了它。
答案 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。它将帮助您了解数据库操作的正常工作流程。