У меня есть приложение iOS с использованием библиотеки FMDB.Objective-c FMDB SQLite insert withParameterDictionary и ключ автоинкремента
Существует 7 полевых SQLite DB (1 автоинкремент, 6 стандартных текстовых полей).
Я пытаюсь выполнить
[db executeUpdate:@"INSERT INTO messages VALUES (:field1,:field2,:field3,:field4,:field5,:field6)" withParameterDictionary:message];
Однако, потому что есть только 6 полей, которые я получаю сообщение об ошибке. Я не могу вставить значение автоинкремента, так как я не знаю, что это (я думаю, я мог бы разместить отдельный запрос для этого ...). И я стараюсь избегать синтаксиса, чувствительного к инъекциям
NSString* sql = [NSString stringWithFormat:@"insert into messages (%@) values (%@)", [newCols componentsJoinedByString:@", "], [newVals componentsJoinedByString:@", "]];
Благодарим за советы!
Предположим, у вас есть столбец идентификатора, который автоматически увеличивается. Вам не нужно ничего предоставлять для этого столбца, поскольку он автоматически вставляется в БД. –
Если я опускаю: primarykey в части значений, я получаю ошибку: табличные сообщения имеют 7 столбцов, но 6 значений были поставлены; Если я отправляю объект nil для pk, я получаю ошибку Ошибка: число привязок (6) неверно для # переменных в запросе (7); Если я использую @ "" для первичного ключа, я получаю «несоответствие типа данных», поскольку первичный ключ в целочисленном. – selytch
Вы видели мой ответ и это вам помогает? –