.NET将“已检查”项存储到数据库中

时间:2017-04-12 23:13:30

标签: sql-server vb.net

想知道是否有人可以协助处理在MSSQL数据库中存储“已检查”项目的最佳方法。 在我的表单上,我有一个字段列表(名称,地址等),然后是用户可以检查的列表框,例如最喜欢的颜色。

在我的数据库中,我会有一个用户详细信息表(tbl_userdetails - [UserID,Address ...])和一个颜色表(tbl_colors,[ColorID,ColorName,ColorCode])。我还需要一个用户颜色表(tbl_userColors - [userID,ColorID])这些论文将通过“userID”链接

通常,为了保存用户详细信息,我有一个sql字符串“UPDATE tbl_userdetails SET ... WHERE userID = @userID”。将更改的已检查项目保存到下一个表格的最佳方法是什么?

我的想法是:

  1. 删除tbl_userColors中UserID的所有颜色,然后将选中的项循环到“INSERT”语句中。
  2. 循环列表中存在的每个项目创建一个数据表,然后“合并”数据(匹配,插入。不匹配的删除)
  3. 还有其他想法吗?构建INSERT语句的最佳方法是什么?

    干杯

2 个答案:

答案 0 :(得分:0)

只要没有任何内容与这些记录相关联,DELETE和INSERT策略就能正常运行。如果您在关系的“一”方面有任何引用tbl_userColors的表格,那么您将会感到头痛。

MERGE战略通常是体面的。一个可能不幸的结果是MISSING记录与FALSE记录相同。例如,您拥有颜色列表{red, green, blue},并且您的用户正在进行选择。六个月后,你会发疯并添加orange。现在你不知道谁没有选择橙色与那些根本没有选择橙色的选项。

第三种选择是在Enabled BIT表上放置tbl_userColors字段。这使您可以确定是否向用户显示了颜色选项,如果用户从未看过特定颜色选项,则会拒绝该选项。

说到启用双边投资协定。您的tbl_colors表也应该具有Enabled BIT - 或者从UI中删除颜色而不删除其数据库记录的其他一些机制。您在某些时候意识到您不再希望向用户提供blue,但您也不想丢失历史数据。

还有一小撇子:你的桌子名字太可怕了。你应该考虑放弃匈牙利表示法。我是骆驼案例表名的忠实粉丝:UsersColorsUserColors

答案 1 :(得分:-1)

非常简单。检查项时,它返回一个布尔值。每当你准备好保存到数据库时,你只想循环遍历颜色,如果选中它(AKA检查是真的),那么你将它添加到一个列表,你可以稍后循环以保存所有的值。 / p>

相关问题