更新数据库中的Checked ListBox值

时间:2013-03-07 09:18:58

标签: c# asp.net winforms

假设我有一个将Id与多个项关联的DataBase表。 用喜欢的食物说出身份证。 所以它看起来像


Id  FoodId
----------

1    1
1    54
1    543
2     42
2    4234

我可以使用选中的列表框

选择/取消选择喜欢的食物值

当我在编辑项目后更新数据库时,我是否会返回并删除表格中包含Id 1的所有先前条目,然后输入整个新集合,或者有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

最简单的方法是你的方法。但它也是最慢的并且生成冗余数据库操作。正确的方法是在内存中创建旧列表和新列表,相应地创建deleteinsert语句。

  1. 比较两个列表并从两个列表中删除所有相同的值。
  2. 为“旧”中的所有剩余值创建DELETE个语句。名单。
  3. 为' new'中的所有剩余值创建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))