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

时间:2010-06-25 09:20:07

标签: iphone count sqlite

我已完成此代码来计算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);是否是获取行数的正确语句......是否正确?

2 个答案:

答案 0 :(得分:5)

编辑:要执行SQL语句,您需要call all these 6 functions in order

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);

答案 1 :(得分:4)

你错过了sqlite3_step(countstmt); 之前 rows = sqlite3_column_int(countstmt, 0);以执行查询