Iphone:从Sqlite3数据库的表视图中加载有限的记录

时间:2012-12-13 13:32:05

标签: iphone objective-c

我在特定用户的数据库中有超过100条记录。现在我想只显示它的前30个,当按下“更多”按钮时,它们下方会出现30个记录。如何在iPhone应用程序中执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以使用SQL Query来实现目标

-(NSMutableArray *)SelectResult:(int)offset
{

    NSMutableArray *arrdata;
arrdata=[[NSMutableArray alloc]init];
sqlite3 *database;

NSString *databasePath = [self getDBPath];

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

    NSString *sqlQuery=[NSString stringWithFormat:@"Select * from TableName where RecordId > %d and RecordId <=%d",offset,offset+30];

    sqlite3_stmt *compiledStatement;
    compiledStatement=nil;

    if(sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
    {
        while(sqlite3_step(compiledStatement) == SQLITE_ROW)
        {
            if ((char *)sqlite3_column_text(compiledStatement,0)!=0)
            {
                NSMutableDictionary *temData = [[NSMutableDictionary alloc] init];

                int pKey = sqlite3_column_int(compiledStatement,0);

                [temData setValue:[NSString stringWithFormat:@"%d",pKey] forKey:@"RecordId"];
                [arrdata addObject:temData];
            }
        }
    }
    sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);

return arrdata;
}

请调用此方法并将传递偏移量作为整数,它将为您提供从偏移量中记录的

喜欢偏移= 0然后1到30      偏移= 30然后31到60 等....

希望它能帮到你

快乐编码

答案 1 :(得分:0)

只需使用NSMutableArray即可保存数据。在表格视图datasource中,如果还有更多要显示的记录,请确保它显示一个额外的单元格(带有“更多”消息)。

didSelectRowAtIndexPath中,您可以通过添加数据库中的其他记录来修改表视图的数据数组。

您可以根据数据数组的大小动态生成SQL查询。