2010-02-27 7 views
1

J'ai une table de scores élevés dans mon jeu. Lorsque le jeu est terminé, le score est affiché à l'écran et il est inséré dans le tableau des meilleurs scores. Je veux savoir comment comparer le nouveau score au score le plus élevé dans le tableau afin que je puisse indiquer à l'utilisateur s'il a obtenu un score élevé. Ci-dessous j'ai inclus le code que j'utilise pour mettre à jour et insérer le score dans le tableau. Le score conservé est un entier, globalScore.Comparer des entiers dans une table sqlite?

-(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; 
} 

Alors, que je cherche quelque chose comme ça ...

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

Répondre

0

Vous pouvez récupérer le score le plus élevé dans la table avec

select max(Score) from tblHard 

Vous pouvez récupérer le résultat de cette requête SQL avec sqlite3_column_int. Voici le code (vérification d'erreurs supprimé par souci de concision):

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

Et vous pouvez alors comparer le score maximum actuel avec globalScore:

if (globalScore > highestScore) { 
    /* ... */ 
} 
+0

Je dois être en mesure de le comparer à la nouvelle partition mon GameViewController – NextRev

+0

Édité. J'ai ajouté le code pour exécuter la requête et récupérer le résultat. –

Questions connexes