Sqlite строка не удаляется - PullRequest
       27

Sqlite строка не удаляется

0 голосов
/ 25 февраля 2012

Когда я пытаюсь удалить строку из приложения для iphone, я могу правильно получить идентификатор, но строка не удаляется.

-(void)delete_profile:(NSString *)mID {

    NSLog(@"menuID: %@",mID);
    sqlite3 *database;
    sqlite3_stmt *deleteStmt=nil;
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
    if(deleteStmt == nil) {
        const char *sql = "delete from item where menuid = ?";
        if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
    }

    //When binding parameters, index starts from 1 and not zero.
    sqlite3_bind_int(deleteStmt, 1, [mID integerValue]);

    if (SQLITE_DONE != sqlite3_step(deleteStmt)) 
        NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));

    sqlite3_reset(deleteStmt);    
    }
    sqlite3_close(database);

}

Ответы [ 2 ]

7 голосов
/ 25 февраля 2012

Пожалуйста, проверьте ваш menuid Datatype.и связать перед подготовкой или использованием, как показано ниже пример

if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

   NSString *sql = [NSString stringWithFormat:@"delete from item where menuid =%d",[mID intValue]];

                const char *del_stmt = [sql UTF8String];

                sqlite3_prepare_v2(contactDB, del_stmt, -1, & deleteStmt, NULL);
                if (sqlite3_step(deleteStmt) == SQLITE_DONE)
                {

                } else {

                }
                sqlite3_finalize(deleteStmt);
                sqlite3_close(contactDB);


}
0 голосов
/ 25 февраля 2012

необходимо проверить ваши dbPath и имя db (чувствительность к регистру)

-(void)delete_profile:(NSString *)mID {
{
    NSString *sql_str=[NSString stringWithFormat:@"DELETE FROM item where menuid = %d",[mID intValue]];
    const char *sql = [sql_str UTF8String];

    sqlite3 *database;

    if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
    {
        sqlite3_stmt *deleteStmt;
        if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) == SQLITE_OK)
        {

            if(sqlite3_step(deleteStmt) != SQLITE_DONE )
            {
                NSLog( @"Error: %s", sqlite3_errmsg(database) );
            }
           else
            {
              //  NSLog( @"row id = %d", (sqlite3_last_insert_rowid(database)+1));
                  NSLog(@"No Error");
            }
        }
        sqlite3_finalize(deleteStmt);
    }
    sqlite3_close(database);
}
...