Сравнивая целые числа в таблице sqlite? - PullRequest
1 голос
/ 27 февраля 2010

У меня есть таблица рекордов в моей игре. Когда игра окончена, результат отображается на экране и вставляется в таблицу рекордов. Я хочу знать, как сравнить новую оценку с самой высокой в ​​таблице, чтобы я мог сообщить пользователю, достигли ли они высокой оценки. Ниже я включил код, который я использую для обновления и вставки оценки в таблицу. Сохраняемая оценка - целое число, globalScore.

-(void)updateScores:(NSInteger)Primary_key
{
    sqlite3_stmt *statement=nil;
    NSString  *sql=nil; 
    @try
    {
        statement=nil;
        sql=nil;    


        sql=[NSString stringWithFormat:@"update tblHard set Score=? where id=%d",Primary_key];


        if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL)!=SQLITE_OK)
        {
            NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }

        sqlite3_bind_int(statement, 1, globalScore);

        int success=sqlite3_step(statement);

        if (success == SQLITE_ERROR) {

            NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
        }
        sqlite3_finalize(statement);
        statement=nil;
        sql=nil;
    }
    @catch (NSException *e) 
    {
        NSLog(@"asd");
    }
}

-(int)InsertGame
{
    int i=0;
    sqlite3_stmt *statement=nil;
    NSString  *sql=nil; 
    @try
    {
        statement=nil;
        sql=nil;    


        sql=[NSString stringWithFormat:@"insert into tblHard(Score) values (?)"];


        if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL)!=SQLITE_OK)
        {
            NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }

        sqlite3_bind_int(statement, 1, globalScore);

        int success=sqlite3_step(statement);

        if (success == SQLITE_ERROR) {

            NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
        }
        i= sqlite3_last_insert_rowid(database);
        sqlite3_finalize(statement);
        statement=nil;
        sql=nil;
    }
    @catch (NSException *e) 
    {
        NSLog(@"asd");
    }
    return i;
}

Так что я ищу что-то вроде этого ...

if(globalScore > "the highest score in the table"){
highscorelabel.hidden=NO;
}

1 Ответ

0 голосов
/ 27 февраля 2010

Вы можете получить самый высокий балл в таблице с помощью

select max(Score) from tblHard

Вы можете получить результат этого запроса SQL с помощью sqlite3_column_int. Вот код (проверка ошибок удалена для краткости):

int highestScore;
/* ... */
sqlite3_prepare_v2(database, "select max(Score) from tblHard", -1,
                   &statement, NULL);
sqlite3_step(statement);
highestScore = sqlite3_column_int(statement, 0);

И затем вы можете сравнить текущий максимальный балл с globalScore:

if (globalScore > highestScore) {
    /* ... */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...