2011-12-20 301 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 2011-12-20 07:42:00

+0

HeikoG谢谢,但你能否详细解释我。 – dinesh 2011-12-20 07:45:19

回答

2

它不会删除记录,因为您只准备查询,从不执行它。

执行预准备查询,必须替换地调用sqlite3_step

,则可以使用其中sqlite3_exec是进行制备,步骤和最终确定方便的功能。