1

時間という列のすべての行の合計を受け取る関数を作成したいと思います。次に、整数値を返す必要があります。これを使用して、別の数値を乗算します。

-(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が返され、「時間」という列がないという警告が表示されます。

4

2 に答える 2

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;
}
于 2012-08-31T05:46:09.883 に答える
0

ほとんどのデータベースエンジンは、クエリの結果で最も外側の集計関数にちなんで列に名前を付けると思います- SUM

クエリをに変更してみてくださいSELECT SUM(hours) AS hours FROM inputs。(または、Oracleにクエリを実行している場合、不運な人は、クエリにクエリがありませんAS。)

于 2012-08-31T01:09:29.390 に答える