我已完成此代码来计算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);
是否是获取行数的正确语句......是否正确?
答案 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_step
和sqlite3_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);
以执行查询