SQlite - iPhone SDK - Ошибка подтверждения

-2

Я пытаюсь сохранить значения в базе данных 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;

  • 0
    Какой запрос вы выполняете? Пожалуйста, NSLog(@"Query: %@",strQuery1); прямо до или после этой первой строки, и поделиться выводом здесь.
  • 0
    @mvds Я проверил его в SQLite Manager, и он отлично работает.
Показать ещё 1 комментарий
Теги:
sqlite3
iphone

3 ответа

1
Лучший ответ

Если бы был только какой-то на ресурсе линии, куда вы могли пойти, и ввести "ограничение не удалось" в поле поиска, чтобы получить ответ.

Так как это, к сожалению, не так, я скажу вам. Проблема, скорее всего, в нарушении вашего ключевого ограничения. Трудно сказать, не видя запрос и схему базы данных, но вы можете, например, попытаться вставить строку с дублирующимся первичным ключом или вставить строку с внешним ключом, который не существует в ссылочной таблице.

  • 0
    Большое спасибо, после проверки всего остального кода, я также сомневаюсь, что проблема с запросом. Странно, я напечатал запрос на консоли и выполнил его в SQLite Manager, и он отлично работает.
0

Прежде всего, просто поделитесь запросом. Вы начинаете срывать людей.

Во-вторых, уверены ли вы, что запрос тайны не является запросом INSERT, и уверены, что он не выполняется дважды вашим секретным кодом?

Это объясняет, что вы не видите ошибку при выполнении запроса (один раз) вручную.

  • 0
    Проблема решена, спасибо за наглость.
  • 0
    @T.A. пожалуйста. Спасибо за то, что поделились вашим великолепным решением, чтобы мы все могли выиграть.
Показать ещё 1 комментарий
0

Выполнение этого в SQLliteManager не поможет вам, это немного отличается на iPhone. Вы должны иметь возможность получить сообщение об ошибке из базы данных, используя свойство errorMessage. И да, также дайте нам сам запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню