从sqlite数据库中查找列中的最大值

时间:2010-10-01 08:21:29

标签: iphone sqlite

我使用以下代码获取列

中的最大值

第11栏(代码中10表示否) 列名称uniqueColumnSNo Column -integer的数据类型。

我对dbhanlder使用的语法感到困惑。

这是代码。 只是让我知道,我将如何从指定列返回最大值。 救命。提前致谢。

+(int)的getMaxColumnSNo {

NSInteger favid;
int count=0;
sqlite3 *database;
NSString *dbpath;
dbpath = [dbhandler dataFilePath:DbName]; 
if (sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK)
{
    NSString *selectSql = [NSString stringWithFormat:@"SELECT max(uniqueColumnSNo) FROM CustomerFields"];
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(database, [selectSql cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK)
    {
        while (sqlite3_step(statement) == SQLITE_ROW)
        {
            //[result addObject:[[NSMutableDictionary alloc] init]];
            favid=(NSInteger)sqlite3_column_int64(statement,10);
            //favid =  [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 10)] intValue];
            count++;

        }
        sqlite3_finalize(statement);
    }
    else
    {
        NSLog(@"Sql Preparing Error");
    }
    sqlite3_close(database);
}
else
{
    NSLog(@"Database not opening");
}
int i;
if (count!=0) {
i=favid ;

}
else {
    i=1;
}

return i;
//return favid;

}

1 个答案:

答案 0 :(得分:2)

你需要:

sqlite3_column_int64( statement, 0 );

列号参数是结果集的索引,而不是原始表列号的索引。结果集中唯一的列是max(uniqueColumnSNo),因此这是列索引号0.