当前位置:  开发笔记 > 前端 > 正文

SQLite count(*)如何获得结果?

如何解决《SQLitecount(*)如何获得结果?》经验,为你挑选了1个好方法。

我已经完成了这个代码来计算db中的行数

    int rows = 0;
if (sqlite3_open([[SqliteManager getDBPath] UTF8String], &database) == SQLITE_OK) {
    const char *sql = "select count(*) from artheca";
    sqlite3_stmt *countstmt;

    if(sqlite3_prepare_v2(database, sql, -1, &countstmt, NULL) == SQLITE_OK) {              
        NSLog(@"inside");
        rows = sqlite3_column_int(countstmt, 0);
    }
}
else
    sqlite3_close(database);
return rows;

但结果总是0.

所以,我不确定是否rows = sqlite3_column_int(countstmt, 0);是获得行数的正确陈述......是否正确?



1> kennytm..:

编辑:要执行SQL语句,您需要按顺序调用所有这6个函数:

sqlite3_open()        Open the database
sqlite3_prepare()     Create the SQL statement
sqlite3_step()        Execute the statement
sqlite3_column()      Fetch the result
sqlite3_finalize()    Destroy the statement
sqlite3_close()       Close the database

你错过了sqlite3_stepsqlite3_finalize步骤.

顺便说一下,您可以使用sqlite3_get_table()sqlite3_exec()进行这些简单的查询.


来自http://www.sqlite.org/c3ref/column_blob.html,

结果集的最左列具有索引0.

因此你应该使用

rows = sqlite3_column_int(countstmt, 0);

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有