如何将 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&lt;string&gt; 具有许多字符串项的对象。

有没有办法为 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 函数

关于 C# 中list<string> 的用法

redis 保存 java Map<String,Map<String,List<User>>

如何获取某些值的值作为类型<String>,它位于 Dart/Flutter 中 List 内的 Map 内?