如何将 List<string> 作为对象插入 SQL Server 表中?
Posted
技术标签:
【中文标题】如何将 List<string> 作为对象插入 SQL Server 表中?【英文标题】:How to insert List<string> into SQL Server table as object? 【发布时间】:2018-08-27 01:26:50 【问题描述】:我制作和使用带有列的数据表
test_dt.Columns.Add("list_paragraphs", typeof(List<string>));
这样,我只需要 1 行来保存 List<string>
具有许多字符串项的对象。
有没有办法为 Microsoft SQL Server 2005 做到这一点?
如果可用,列的大小是否限制为 4000 (varchar
)?还是足够像数据表?
我已经搜索了几个小时,但只有一些线程在讨论逐行插入带有循环的列表。
【问题讨论】:
您想在一个 SQL 列中拥有整个列表内容吗? @styx,是的,只有 1 列,行。方便地在 DataTable 中使用。 您可以将其编码为 CSV,然后在从数据库中读取后解码回来。 @ZoranHorvat,感谢您的建议。我知道一些像另存为xml的方式,但只是怀疑是否有像数据表这样直接、方便的方式.. 您也可以使用 blob,但您确定要这样做吗?不符合第一范式。 【参考方案1】:Yuo 有多种选择来存储您的数据,但更重要的是一个问题:您打算如何处理这些数据?
您可能会阅读this related question 以找到一些一般性提示,在这种情况下,将多个值存储为一个可能是一个好主意 - 以及何时应该避免这种情况。
你可以
使用一些分隔符并将所有值存储为 CSV 存储紧凑 读起来很糟糕 使用一些通用格式,如 XML 或 JSON(v2005 不支持) 存储相当紧凑 更好阅读,但仍然笨拙 使用相关的边表,您可以在其中将值与外键约束一个接一个一起存储 存储时的小开销 但是——几乎可以肯定! - 适合您的最佳方式。我从 SQL 专家那里了解到的一个明显事实是没有方便的方法。
不,方便的方法是关联表。任何其他方法都是您应该有充分理由这样做的。
【讨论】:
非常感谢您的支持!我已经决定使用 xml。我还在有用的链接中表示感谢。 :)以上是关于如何将 List<string> 作为对象插入 SQL Server 表中?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SWIG 时如何将 int 数组和 List<string> 作为参数从 C# 传递给 C++
如何从 jersey2 客户端获取 list<String> 作为响应
将 List<String> 作为参数传递给 postgres 函数