J'utilise SQLite3 dans mon application iPhone pour sélectionner les données d'une table (tbresults), faire des calculs sur les données et les afficher dans ma vue uitable. La commande sql utilise la fonction SUM et mon application ne semble pas l'aimer.Problème lors de l'utilisation de la fonction SUM avec SQLite3 sur iPhone
La méthode dans laquelle je fais la sélection dans la table est ci-dessous mais le traitement semble échouer à la ligne suivante.
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
Le code complet de la méthode est ci-dessous.
+ (void) getLeagueTable {
Tag_TrackerAppDelegate *appDelegate = (Tag_TrackerAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.tbresultsArray = [[NSMutableArray alloc] init];
const char *sql = "select a.resultid, a.teamname, sum(b.played), sum(b.win), "
"sum(b.draw), sum(b.lose), sum(b.for), sum(b.against), sum(b.win * 3 + b.draw) "
"from tbteam a, tbresults b, tbseason c where a.teamid = b.teamid and c.active = 'Y'"
"and b.seasonid = c.seasonid group by b.teamid order by points desc;";
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
sqlite3_stmt *selectstmt;
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
tbresults *resultsObj = [[tbresults alloc] initWithPrimaryKey:primaryKey];
resultsObj.teamname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
resultsObj.played = sqlite3_column_int(selectstmt, 2);
resultsObj.won = sqlite3_column_int(selectstmt, 3);
resultsObj.drawn = sqlite3_column_int(selectstmt, 4);
resultsObj.lost = sqlite3_column_int(selectstmt, 5);
resultsObj.For = sqlite3_column_int(selectstmt, 6);
resultsObj.Against = sqlite3_column_int(selectstmt, 7);
resultsObj.points = sqlite3_column_int(selectstmt, 8);
[appDelegate.tbresultsArray addObject:resultsObj];
[resultsObj release];
}
}
else
sqlite3_close(database);
}
Est-ce que quelqu'un sait s'il y a un problème en utilisant la fonction SOMME sur l'iPhone? J'ai vérifié et vérifié le reste du code. La base de données est en cours d'ouverture.
Toute aide serait appréciée.
Je voudrais pouvoir dire ce que l'erreur est, mais je ne sais pas ce que signifie le code d'erreur. Le code est 4123824 mais je ne trouve pas ce code n'importe où. Je sais juste que sqlite3_prepare_v2 n'est pas égal à SQLITE_OK. J'ai aussi essayé votre suggestion de supprimer a.resultid ou de la déplacer dans la clause group by mais cela n'a malheureusement pas fonctionné. –