从iOS应用程序中删除mySQL表的行

时间:2015-08-03 00:18:24

标签: ios mysql uitableview

我目前正在开发一个iOS应用程序,它从mySQL数据库获取信息并将其输出到JSON,而JSON又显示在UITableView中。我希望能够删除UITableView的一行,这也会删除数据库中的相应行。我知道我需要使用这个功能:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [_wordsArray removeObjectAtIndex:indexPath.row];
     [self.editTableView reloadData];
}

我不确定它是如何工作的,我知道我必须使用PHP脚本才能从数据库中删除该行。在iOS方面需要做些什么?谁能指出我正确的方向? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

  

在iOS方面需要做些什么?

这是一个非常广泛的问题。您必须更具体地了解您需要帮助的内容。

一般来说,这是需要做的事情,我相信你已经知道了。

  • 从数组中删除记录并重新加载表。我知道你已经做到了。
  • 我假设您在某处本地存储该阵列(NSUserDefaults,plist等),否则用户将需要在每次启动应用时从您的服务器获取最新数据,并确保删除行不会再出现
  • 您需要在服务器上对您的php进行异步调用
  • 您需要传递用户决定删除的信息等值,然后在数据库中执行该删除

如果您需要代码示例,请将其谷歌给我。

答案 1 :(得分:0)

使用mySQL数据库保存我的数据并使用数组访问iOS级别的表格。我从数据库中插入,更新和删除记录的方法如下:

在iOS级别上使用mySQL ##

  1. mySQL到iOS级别:首先是创建一个方法或内联函数,可以在应用程序的任何位置访问;在单身内部举个例子。此方法将通过在参数列表中传递sqlite3_statement来返回包含一条记录的数组。此方法类似于:
  2. 示例

    /**
    * From the parameter list, an array is produced in Entry format
    * @param [in] statement incoming value from previous call sqlite3_step(..) == SQLITE_ROW
    * @return NSArray: Entry format
    */
    static inline NSMutableArray * SQLStatementRowIntoEntryEntry( sqlite3_stmt *statement) { 
    ...
    return [NSMutableArray arrayWithObjects: stringSubject, date dateCreated, stringBody, emotion, weatherCondition, temperature isBookmarked, [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: sqlite3_column_int( statement, SQL_ENTRIES_id)], @"id", nil], nil];
    
    };
    

    我如何从mySQL记录中保存id键,将其作为最后一个对象放在字典中,所以当我在iOS级别使用该数组时,它有点不受欢迎。但是,只要我想从数据库中更新或删除此记录,就可以了。

    1. 从iOS级别更新和删除记录因此,因为每个记录的ID都保存在数组中,这使得更新或删除数据库中的记录变得非常容易。在您的查询中,您有类似的内容:

      NSString *sqlStatement = [NSString stringWithFormat: @"UPDATE Entries SET subject = \"%@\", date = \"%@\", dateCreated = \"%@\", body = \"%@\", emotion = %d, weatherCondition = %d, temperature = %d, isBookmarked = %d, diaryID = %d where id = %d;", [[arrayEntry objectEntry_subject] stringByReformatingForSQLQuries], [dateFormatter stringFromDate: [arrayEntry objectEntry_date]], [dateFormatter stringFromDate: [arrayEntry objectEntry_dateCreated]], [[arrayEntry objectEntry_body] stringByReformatingForSQLQuries], [arrayEntry objectEntry_emotion], [arrayEntry objectEntry_weatherCondition], [arrayEntry objectEntry_temperature], [arrayEntry objectEntry_isBookmarked], [[[[[arrayEntry optionsDictionary] objectForKey: @"diary"] optionsDictionary] objectForKey: @"id"] intValue], [[[arrayEntry lastObject] objectForKey: @"id"] intValue]];
      
    2. 您想要的是[[[arrayEntry lastObject] objectForKey: @"id"] intValue]取代.. where id = %d;来更新或删除记录。

      我希望这有帮助,并且可以提出任何问题,我复制并粘贴了我的项目中的代码

答案 2 :(得分:0)

您可以将数据库查询字符串传递给您的php脚本。

  

NSString * sqlquery = [NSSring sringwithFormate:@" DELETE FROM tabel_name WHERE tabel_id =' your_tabel_row_id'"];

在此tabel_id中是您要删除的数据库行ID,your_tabel_row_id是帮助您从数据库中删除记录的标识符。