Objective-C Проблема с удалением данных из базы данных SQLITE - код результата 5 - PullRequest
1 голос
/ 31 января 2012

У меня проблемы с удалением строки / записи данных из базы данных SQLite, расположенной на iPhone. Я следовал совету, данному в следующем post , но код результата из SQLite равен 5. Из справочного руководства по SQLite 5 означает:

SQLITE_BUSY 5 / * Файл базы данных заблокирован * /

Кто-нибудь еще сталкивался с этой проблемой или есть идеи, почему это так?

Вот выдержка из моего кода (dbrc установлен на 5):

    NSString *retrievedContactID = [archivedContact objectForKey:@"contact_id"];

    sqlite3 *database = [FollowUPAppDelegate checkAndCreateDatabase];
    NSString *deleteSQL = [NSString stringWithFormat:@"DELETE FROM Contacts WHERE contact_id = %@", retrievedContactID];

    const char *delete_stmt = [deleteSQL UTF8String];
    sqlite3_stmt *compiledStatement;
    int dbrc; //database return code

    dbrc = sqlite3_prepare_v2(database, delete_stmt, -1, &compiledStatement, NULL);
    dbrc = sqlite3_step(compiledStatement);
    sqlite3_finalize(compiledStatement);
    compiledStatement = NULL;


    if (dbrc != 101) {  //anything except 101 (SQLITE_DONE for delete, *not* SQLITE_OK)
        NSLog(@"Error deleting contact from database: result code %i", dbrc);
        return;
    }
    else {
        NSLog(@"deleted the customer from datasets");
    }

    sqlite3_close(database);

1 Ответ

1 голос
/ 31 января 2012

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

Ваша проблема похожа.Ваша база данных заблокирована каким-то другим процессом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...