ios - Sqlite 插入或替换不更新一列

标签 ios iphone sqlite

我正在使用插入或更新数据。我有一个表 sub_sub_categories,有一列 is_favorite 默认值为 0,当用户添加到收藏夹时我将它设置为 1。在每次启动应用程序时,我都会插入或替换来自网络的所有数据。当我这样做时,它还会将 is_favorite 设置为 0。虽然我没有设置它。如何阻止它更新 is_favorite 列。这是我的代码。

for (int i=0; i < arraySubSubCategories.count; i++) {
    id dict = [arraySubSubCategories objectAtIndex:i];

    NSString *query = [NSString stringWithFormat:@"INSERT OR REPLACE into sub_sub_categories (id, name, sub_category_id, problem_name, problem_description, why, why_link, solution, solution_link, sort_order, is_deleted) VALUES (%@, '%@', %@, '%@', '%@', '%@', '%@', '%@', '%@', %@, %@)",
                       [dict objectForKey:@"id"],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"name"]],
                       [dict objectForKey:@"sub_category_id"],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"problem_name"]],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"problem_description"]],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"why"]],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"why_link"]],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"solution"]],
                       [MyCommonFunctions addSlashes:[dict objectForKey:@"solution_link"]],
                       [dict objectForKey:@"sort_order"],
                       [dict objectForKey:@"is_deleted"]];

    [MyCommonFunctions InsUpdateDelData:query];
}

编辑查询是:

INSERT OR REPLACE into sub_sub_categories (id, name, sub_category_id, problem_name, problem_description, why, why_link, solution, solution_link, sort_order, is_deleted) VALUES (93, 'some data', 6, '', 'some data', 'some data', '', 'some data', 'some data', 0, 0)

最佳答案

INSERT OR REPLACE 不会在 db 中保留以前的值,它会用给定值或默认值覆盖它。

您必须首先查询您的数据库以获取现有字段(如果记录存在)并将您不想替换的字段放入查询中。

关于ios - Sqlite 插入或替换不更新一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280890/

相关文章:

iOS:GUI 自动化测试和持续集成

ios - 如何从 Xamarin IOS 获取唯一的 DeviceID

r - 从sqlite导入具有大int值的列

sqlite - 将sqlite3 db推送到heroku时出现问题:lib/taps/schema.rb:30:在sqlite_config中:未定义的方法[[]]为nil:NilClass(NoMethodError)

mysql - SQL 通过日期检查选择可用房间

iphone - iOS 应用前台同时出现多个推送通知时如何处理

ios - 禁用特定选项卡栏项目排序的最佳方法

iphone - 未显示启用应用内购买

iphone - 将基于自定义 View 的 UIBarButtonItem 放置在没有默认水平填充的导航栏中

iphone - iOS 10 的 iPhone 中的缩放问题