使用Sqlite Iphone在数据库中插入行

时间:2012-03-01 14:05:50

标签: iphone

我有以下代码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);
    }

2 个答案:

答案 0 :(得分:2)

哇!另一个本机使用sqllite3 !! :)

我建议您使用名为 FMDB 的外部lib(2个文件),它是sqllite3的包装器。

https://github.com/ccgus/fmdb

易于使用。希望这会有所帮助。

答案 1 :(得分:0)

只是为了完成并结束这个问题,我正在回答我的评论。

尝试评论sqlite3_finalize(语句);在while循环中。 释:

SQLite.org说

  

调用sqlite3_finalize()函数来删除准备好的   言。

此外,

  

应用程序必须完成每个准备好的语句才能完成   避免资源泄漏。对于应用程序来说,这是一个严重的错误   在最终确定之后尝试使用准备好的声明。 任何用途   在最终确定后,准备好的声明可以导致   未定义和不良行为,例如段错误和堆   损坏。

谢谢,