ударил в выполнении SQL-запроса с использованием FMDB

Я использую фреймворк FMDB для SQLite в одном из моих проектов iPhone. Код выглядит следующим образом:

for (int i = 0; i < CatID.count; i++) { NSString *subCatId = [NSString stringWithFormat:@"SELECT * FROM expense where CAT_ID = %@ AND CURR_ID = %@ AND EXP_DATE BETWEEN '%@' AND '%@' ", [CatID objectAtIndex:rowTrip], [currID objectAtIndex:1], _fromTextField.text, _toTextField.text]; FMResultSet *result = [database executeQuery:subCatId]; while([result next]) { [_total addObject:[result stringForColumn:@"AMOUNT"]]; } } 
  1. CatID фиксирован, то есть он задается пользователем.

  2. carrID с помощью цикла for и запрашивается.

Каждый раз после SQL-запроса массив _total увеличивается (добавляется новый объект), но это висит.

Допустим, у нас есть выход "AMOUNT" – 100, а объекты _total добавляются к _total массиву. Пожалуйста, скажите мне, где я делаю неправильно.

Выполняя SQL-запросы, DONT использует метод [NSString stringWithFormat:] . Вместо этого просто используйте запрос как есть и передайте аргументы вдоль строки в [database executeQuery:] .

Попробуйте следующее:

 NSMutableArray* _total = [[NSMutableArray alloc] init]; for (int i = 0; i < [CatID count]; i++) { NSString *subCatId_QUERY = @"SELECT * FROM expense where CAT_ID = %@ AND CURR_ID = %@ AND EXP_DATE BETWEEN '%@' AND '%@' "; NSNumber* rowTrip = [[CatID objectAtIndex:rowTrip] intValue]; NSNumber* currID = [[currID objectAtIndex:1] intValue]; NSString* fromDate = _fromTextField.text; NSString* toDate = _toTextField.text; FMResultSet *result = [database executeQuery:subCatId_QUERY,rowTrip,currID, fromDate, toDate]; while([result next]) { [_total addObject:[result stringForColumn:@"AMOUNT"]]; //are you sure about this? string?? } }