2012-08-30 2 views
1

hours라는 열의 모든 행의 합계를 취하는 함수를 작성하려고합니다. 그런 다음 정수 값을 반환해야하는데, 다른 값으로 곱하기 위해 사용하려고합니다.sqlite sum() into nsinteger

-(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을 반환하고, 경고가 "시간"

+0

당신이 당신의 데이터베이스에보고하고 있었다면 보는 시도 했 '시간'이라는 칼럼? –

+0

예 시간이있는 열이 있습니다. 하지만이 작품 shouldn? – uba2012

답변

0

나는 대부분의 데이터베이스 엔진은 후 쿼리의 결과에서 열 이름을 것이라고 생각이라고 럼 말을하지 않습니다와 함께 제공 가장 바깥 쪽 집계 함수 - SUM.

SELECT SUM(hours) AS hours FROM inputs으로 쿼리를 변경해보십시오. (Oracle을 조회하는 경우 또는, 당신 불운 사람, 쿼리는 AS없이.)

0

다음 코드는 작동합니다

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

ravi 너는 천재 야. – uba2012

+0

도와 줘서 기뻐! –