我有以下代码n我在数据库中有4条记录但循环运行2次n只获得第一行两次我的代码中是否有问题?
- (void) getAllRowsFromTableName:(NSString *)tableName{
NSString *qsql = [NSString stringWithFormat:@"SELECT * FROM '%@'",tableName];
NSLog(@"query is :%@",qsql);
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db,[qsql UTF8String] , -1, &statement,nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
NSLog(@"loop");
int catId = sqlite3_column_int(statement, 1);
NSLog(@"***CatId is :%d",catId);
sqlite3_finalize(statement);
}
sqlite3_finalize(statement);
}
答案 0 :(得分:2)
哇!另一个本机使用sqllite3 !! :)
我建议您使用名为 FMDB 的外部lib(2个文件),它是sqllite3
的包装器。
易于使用。希望这会有所帮助。
答案 1 :(得分:0)
只是为了完成并结束这个问题,我正在回答我的评论。
尝试评论sqlite3_finalize(语句);在while循环中。 释:
SQLite.org说
调用sqlite3_finalize()函数来删除准备好的 言。
此外,
应用程序必须完成每个准备好的语句才能完成 避免资源泄漏。对于应用程序来说,这是一个严重的错误 在最终确定之后尝试使用准备好的声明。 任何用途 在最终确定后,准备好的声明可以导致 未定义和不良行为,例如段错误和堆 损坏。强>
谢谢,