我已经完成了这个代码来计算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);
是获得行数的正确陈述......是否正确?
编辑:要执行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_step
和sqlite3_finalize
步骤.
顺便说一下,您可以使用sqlite3_get_table()
或sqlite3_exec()
进行这些简单的查询.
来自http://www.sqlite.org/c3ref/column_blob.html,
结果集的最左列具有索引0.
因此你应该使用
rows = sqlite3_column_int(countstmt, 0);