2011-12-20 6 views
3

Я новичок в разработке ios. Можете ли вы помочь мне удалить запись из таблицы. База данных и запрос кажутся прекрасными. Но я не знаю, почему он не удаляет записи. Я вижу, что профиль nslog удален в моей консоли. Заранее спасибо.Удалить записи из базы данных sqlite

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    self.str_databasePath = [documentsDirectory stringByAppendingPathComponent:@"MY_database.sqlite"]; 

    sqlite3 *database = nil; 

    if (sqlite3_open([self.str_databasePath UTF8String], &database) == SQLITE_OK) 
    { 
     NSLog(@"database opened : %@", profileType); 
     const char* sqlStatement; 
     if([profilerType isEqualToString:@"personal"]){ 
      sqlStatement = "DELETE FROM TABLE1 where profile_type = 'OWN_PERSONAL'"; 
     }else if([profilerType isEqualToString:@"corporate"]){ 
      sqlStatement = "DELETE FROM TABLE2 where profile_type = 'BANK_PROFILE'"; 
     } 
     sqlite3_stmt *statement; 

     if(sqlite3_prepare_v2(database, sqlStatement, -1, &statement, NULL) == SQLITE_OK) 
     { 
      NSLog(@"profile deleted "); 
      return YES; 
     }else{ 

      NSAssert1(0,@"Error: Failed to prepare statement with message %s '.", sqlite3_errmsg(database)); 
     } 


     // Finalize and close database. 
     sqlite3_finalize(statement); 
     sqlite3_close(database); 
    } 
    return NO; 
+0

Я бы определенно рекомендовал вам взглянуть на базовую структуру данных. Скорее всего, это лучший вариант вместо того, чтобы напрямую обращаться к SQL. – HeikoG

+0

HeikoG Спасибо, но вы можете объяснить мне подробно. – dinesh

ответ

2

Это не удаление записей, потому что вы только готовите запрос, никогда не выполняете его.

Для выполнения подготовленного запроса, вы должны вызвать sqlite3_step

В качестве альтернативы, вы можете использовать sqlite3_exec, которая является функцией удобства, которая выполняет подготовку, шаг и завершить работу.

3

Как сказал HeikoG, гораздо проще использовать Core Data. Core Data - это в основном SQLite db, но его гораздо проще использовать. Посмотрите на этот учебник: http://www.raywenderlich.com/934/core-data-tutorial-getting-started

Возможно, вы сэкономите время, если вы используете это вместо прямого использования SQL, даже если вам нужно переписать текущий код.

Смежные вопросы