Ошибка Sqlite в Задаче C - PullRequest
       3

Ошибка Sqlite в Задаче C

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

Я пытаюсь удалить некоторые записи из моей базы данных sqlite в приложении для iPhone, но получаю странную ошибку.

Вот мой код:

if(sqlite3_open([databasePath UTF8String], &yerocDB)==SQLITE_OK)
{   
    sqlite3_stmt *compiledstatement;

    NSString *deleteSql=[NSString stringWithFormat: @"delete from Favorites_Table where playlist_name = Studying and date = 1/1/2012"];
    const char *sqlstmt = [deleteSql UTF8String];

    if(sqlite3_prepare_v2(yerocDB, sqlstmt, -1, &compiledstatement, NULL)==SQLITE_OK)
    {
        int result = sqlite3_step(compiledstatement);

        if(SQLITE_DONE != result)

            NSAssert1(0,@"Error while creating delete statement => %s",sqlite3_errmsg(yerocDB) );
    }else{
        NSLog(@"didn't delete error: %s", sqlite3_errmsg(yerocDB));
    }
    sqlite3_finalize(compiledstatement);
}

но тогда я получаю ошибку:

didn't delete error: no such column: Studying

playlist_name и date - мои столбцы ... Почему говорится, что "Study" - это не столбец?

1 Ответ

4 голосов
/ 11 января 2012

Вам нужно заключить Studying в одинарные кавычки.И ваша дата.

Это:

delete from Favorites_Table 
where playlist_name = Studying and date = 1/1/2012

Должно быть так:

delete from Favorites_Table 
where playlist_name = 'Studying' and date = '2012-01-01'

Причина в том, что если вы не заключите его в одинарные кавычки,Парсер будет думать, что это имя столбца.В первом запросе вы пытались удалить из Favorites_Table, где столбец playlist_name равен столбцу Studying.Отныне ваша ошибка: «Нет такого столбца».

И как только вы исправите кавычки вокруг изучения, ваша дата тоже собирается выдать ошибку.Для сравнения даты используют формат ISO (гггг-мм-дд).Не используйте локализованные форматы мм / дд / гггг или дд / мм / гггг, как правило.

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