У меня есть приложение iOS, использующее функцию локальной базы данных. Я не использую CoreData; Я копирую свой файл sqlite из набора ресурсов в папку «Документы», а затем обновляю/извлекаю данные из этого файла. Все обновления, создавая таблицу, вставляя алгоритм, отлично работают в моем приложении.Избегайте жесткого кодирования при обновлении локальной базы данных в ios
Я просто интересуюсь улучшением. У меня более 7 таблиц, и каждая таблица имеет разные атрибуты. Сейчас я должен указать каждый оператор обновления в моем коде, как (только в качестве примера):
// for table A
const char* sql = "update tableA Set attA1 = ?, attA2 = ? where att0 = ?";
// .. other code here ...
// bind it - this is the part where i am confused.
// each table has different attribute.. So each table will have each binding snippet?
if(sqlite3_prepare_v2(database, sql, 267, &stmt, NULL)==SQLITE_OK){
sqlite3_bind_text(stmt, 1, [input1 UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 2, [input2 UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 3, input0);
}
Извинения, если это звучит как начинающий вопрос. Можно ли избежать «жесткого кодирования», как это? Я не нашел способ избежать жесткого кодирования, но мне просто интересно, есть ли у кого-то идеи. Ближайшее сообщение, которое я нашел, это this - и все было в порядке. Я просмотрел много учебников по iOS sqlite db, и большинство из них сделали это, так как у них только 1 таблица в их примере.
Я все еще учился, поэтому, пожалуйста, не слишком грубый на меня, если это очевидный/плохой вопрос. :)
Вы можете использовать что-то вроде FMDB, или вы можете динамически создавать свои собственные SQL-инструкции. Это требует некоторого планирования и достаточного количества кодирования для создания «рамки», но это часто стоит того. –