【问题标题】:How to insert List<string> into SQL Server table as object?如何将 List<string> 作为对象插入 SQL Server 表中?
【发布时间】:2018-08-27 01:26:50
【问题描述】:

我制作和使用带有列的数据表

test_dt.Columns.Add("list_paragraphs", typeof(List<string>));

这样,我只需要 1 行来保存 List&lt;string&gt; 具有许多字符串项的对象。

有没有办法为 Microsoft SQL Server 2005 做到这一点?

如果可用,列的大小是否限制为 4000 (varchar)?还是足够像数据表?

我已经搜索了几个小时,但只有一些线程在讨论逐行插入带有循环的列表。

【问题讨论】:

  • 您想在一个 SQL 列中拥有整个列表内容吗?
  • @styx,是的,只有 1 列,行。方便地在 DataTable 中使用。
  • 您可以将其编码为 CSV,然后在从数据库中读取后解码回来。
  • @ZoranHorvat,感谢您的建议。我知道一些像另存为xml的方式,但只是怀疑是否有像数据表这样直接、方便的方式..
  • 您也可以使用 blob,但您确定要这样做吗?不符合第一范式。

标签: c# list sql-server-2005


【解决方案1】:

Yuo 有多种选择来存储您的数据,但更重要的是一个问题:您打算如何处理这些数据?

您可能会阅读this related question 以找到一些一般性提示,在这种情况下,将多个值存储为一个可能是一个好主意 - 以及何时应该避免这种情况。

你可以

  • 使用一些分隔符并将所有值存储为 CSV
    • 存储紧凑
    • 读起来很糟糕
  • 使用一些通用格式,如 XML 或 JSON(v2005 不支持)
    • 存储相当紧凑
    • 更好阅读,但仍然笨拙
  • 使用相关的边表,您可以在其中将值与外键约束一个接一个一起存储
    • 存储时的小开销
    • 但是——几乎可以肯定! - 适合您的最佳方式。

我从 SQL 专家那里了解到的一个明显事实是没有方便的方法。

不,方便的方法是关联表。任何其他方法都是您应该有充分理由这样做的。

【讨论】:

  • 非常感谢您的支持!我已经决定使用 xml。我还在有用的链接中表示感谢。 :)
猜你喜欢
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多