Я пытаюсь сохранить значения в базе данных SQLite в iPhone sdk. Когда я выполняю эту строку
[database executeNonQuery:strQuery1];
Это сообщение напечатано на консоли.
SQLite Step Failed: сбой ограничения
Мне нужна срочная помощь, так как я должен представить проект сегодня вечером. Я пробовал с 2 дней, и это сводит меня с ума.
Информация о файле заголовка Heres
Я прописал это в моем заголовке контроллера просмотра, используя эту строку.
Sqlite *database;
And heres the header of SQlite
@interface Sqlite : NSObject { NSInteger busyRetryTimeout; NSString *filePath; sqlite3 *_db; } @property (readwrite) NSInteger busyRetryTimeout; @property (readonly) NSString *filePath; + (NSString *)createUuid; + (NSString *)version; - (id)initWithFile:(NSString *)filePath; - (BOOL)open:(NSString *)filePath; - (void)close; - (NSInteger)errorCode; - (NSString *)errorMessage; - (NSArray *)executeQuery:(NSString *)sql, ...; - (NSArray *)executeQuery:(NSString *)sql arguments:(NSArray *)args; - (BOOL)executeNonQuery:(NSString *)sql, ...; - (BOOL)executeNonQuery:(NSString *)sql arguments:(NSArray *)args; - (BOOL)commit; - (BOOL)rollback; - (BOOL)beginTransaction; - (BOOL)beginDeferredTransaction;
Если бы был только какой-то на ресурсе линии, куда вы могли пойти, и ввести "ограничение не удалось" в поле поиска, чтобы получить ответ.
Так как это, к сожалению, не так, я скажу вам. Проблема, скорее всего, в нарушении вашего ключевого ограничения. Трудно сказать, не видя запрос и схему базы данных, но вы можете, например, попытаться вставить строку с дублирующимся первичным ключом или вставить строку с внешним ключом, который не существует в ссылочной таблице.
Прежде всего, просто поделитесь запросом. Вы начинаете срывать людей.
Во-вторых, уверены ли вы, что запрос тайны не является запросом INSERT
, и уверены, что он не выполняется дважды вашим секретным кодом?
Это объясняет, что вы не видите ошибку при выполнении запроса (один раз) вручную.
Выполнение этого в SQLliteManager не поможет вам, это немного отличается на iPhone. Вы должны иметь возможность получить сообщение об ошибке из базы данных, используя свойство errorMessage. И да, также дайте нам сам запрос.
NSLog(@"Query: %@",strQuery1);
прямо до или после этой первой строки, и поделиться выводом здесь.