我想构建一个函数,该函数取一个名为hours的列中所有行的总和。然后它应该返回一个整数值,我将用它与另一个数字相乘。
-(NSInteger)calculateTotal{
FMDatabase *dbHandler = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[dbHander open];
FMResultSet *results = [dbHandler executeQuery:@"SELECT SUM(hours) FROM inputs"];
NSInteger totalHours;
while ([results next]) {
totalHours = [results intForColumn:@"hours"];
}
return totalHours;
}但是它不起作用,它返回0,并且它附带一个警告,指出没有名为“小时”的列。
发布于 2012-08-31 09:09:29
我认为大多数数据库引擎都会将查询结果中的列命名为最外层的聚合函数-- SUM。
尝试将您的查询更改为SELECT SUM(hours) AS hours FROM inputs。(或者,如果您正在查询Oracle,您这个倒霉的人,查询没有AS。)
发布于 2012-08-31 13:46:10
以下代码将起作用:
-(NSInteger)calculateTotal
{
FMDatabase *dbHandler = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
if(![dbHander open])
{
NSLog(@"Could not open DB, try again");
return -1; //return some value that tells you that there was an error
}
FMResultSet *results = [dbHandler executeQuery:@"SELECT SUM(hours) AS sum_hours FROM inputs"];
NSInteger totalHours = -1;
while ([results next]) {
totalHours = [results intForColumn:@"sum_hours"];
}
[results close];
[dbHandler close];
return totalHours;
}https://stackoverflow.com/questions/12206551
复制相似问题