Я делал это прочь и на в течение многих лет - справляющийся (или пытающийся справиться) версии схемы. Лучшие подходы зависят от инструментов, которые Вы имеете. Если можно получить менеджера по Схеме "Программного инструмента Quest", Вы будете в хорошем состоянии. Oracle имеет свой собственный, нижний инструмент, который также называют "менеджером по Схеме" (путающий очень?), что я не рекомендую.
Без автоматизированного инструмента (см. другие комментарии здесь о Чуваке Данных) тогда Вы будете использовать сценарии и файлы DDL непосредственно. Выберите подход, зарегистрируйте его и следуйте за ним строго. Мне нравится иметь способность воссоздать базу данных в любой данный момент, таким образом, я предпочитаю иметь полный экспорт DDL всей базы данных (если я - DBA), или схемы разработчика (если я нахожусь в режиме разработки продукта).
FMDB может быть немного привередливым, если вы не передадите объект как NSNumber. Это поддерживаемый и безопасный способ форматирования запросов.
[db executeUpdate:@"DELETE FROM theTable WHERE id = ?", [NSNumber numberWithInt:myObject.id]];
Вы должны заменить:
... [database executeQuery:sqlStat] ...
на:
... [database executeUpdate:sqlStat];
Также попробуйте добавить:
[database beginTransaction];
перед вашим блоком CRUD, и:
[database commit];
после выполнения операции обновления/удаления/вставки.
;)