Найти максимальное значение в столбце из базы данных sqlite - PullRequest
2 голосов
/ 01 октября 2010

Я использую следующий код для получения максимального значения в столбце

Колонка № 11 (в коде означает 10 нет) Имя столбца uniqueColumnSNo Тип данных Столбец-целое.

Меня смущает синтаксис, используемый 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 Ответ

2 голосов
/ 03 июня 2011

Вам необходимо:

sqlite3_column_int64( statement, 0 );

Параметр номера столбца является индексом набора результатов, а не исходного номера столбца таблицы.Ваш единственный столбец в наборе результатов - это max (uniqueColumnSNo), таким образом, это номер столбца с номером 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...