假设我有一个将Id与多个项关联的DataBase表。 用喜欢的食物说出身份证。 所以它看起来像
Id FoodId
----------
1 1
1 54
1 543
2 42
2 4234
等
我可以使用选中的列表框
选择/取消选择喜欢的食物值当我在编辑项目后更新数据库时,我是否会返回并删除表格中包含Id 1的所有先前条目,然后输入整个新集合,或者有更好的方法吗?
答案 0 :(得分:0)
最简单的方法是你的方法。但它也是最慢的并且生成冗余数据库操作。正确的方法是在内存中创建旧列表和新列表,相应地创建delete
,insert
语句。
DELETE
个语句。名单。 INSERT
语句名单。 答案 1 :(得分:0)
DELETE
FROM favfood
WHERE id=@Id and foodid not in(new_list_of_food_ids)
// serialized new_list_of_food_ids
INSERT INTO favfood(id,foodid)
(SELECT @Id, [int]
FROM OPENXML (@idoc, '/ArrayOfInt/int',1)
WITH ([int] int '.')
where [int] not in (select foodid from favfood where id=@Id))