【问题标题】:How to store text with multi line separators into database?如何将具有多行分隔符的文本存储到数据库中?
【发布时间】:2012-03-12 14:35:19
【问题描述】:

我有一些文字,

例如

line one \r\n
line two \r\n
line threee.

在我的数据库中,我有一列定义为类型text,然后我使用实体框架来映射该列,实体框架生成的代码是类型string

我可以成功地将该文本保存到数据库的列中。但是,在 Management Studio 中,我看不到那些行分隔符,当我复制值并粘贴到记事本时,它们变成了一行文本。

有谁知道问题出在哪里?

谢谢。

【问题讨论】:

  • 将值从 Management Studio 复制到记事本和使用查询从列中读取数据是两件不同的事情。您可以尝试将其粘贴到 Word。

标签: c# entity-framework .net-4.0 sql-server-2000


【解决方案1】:

这很可能只是管理工作室的问题。尝试从 C# 查询数据库并打印字段的值。您将立即看到 CRLF 是否存在。

【讨论】:

    【解决方案2】:

    问题只是 Management Studio 不支持所有字符。它会在您复制值时删除换行符。

    如果将结果从网格更改为文本(查询 -> 结果为 -> 结果为文本,或 ctrl+T),然后选择值,您将看到文本以单独的行显示。

    【讨论】:

      【解决方案3】:

      在存储文本数据时,您应该坚持使用 NVarchar(原因之一是它支持更多字符)。 下面是来自 msdn 的摘录:

      "ntext、text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。使用 nvarchar( max)、varchar(max) 和 varbinary(max) 代替".

      更多信息:

      【讨论】:

      • -1 部分正确,但与问题无关。在数据库中存储时使用 HTML 编码或 URL 编码根本不是一个好主意。 HttpUtility 类甚至没有任何称为 EncodeDecode 的方法。
      • 这样更好,但仍然无关紧要。
      • 微软自己建议放弃Text类型并采用NVarchar有几个原因。考虑到问题是关于文本类型的这个答案,即使它不涉及新行问题,它仍然是相关的恕我直言。我认为这是一个很好的建议,可以建议某人他正在使用的东西将被弃用,以支持更好的解决方案。
      • 这就是所谓的复制粘贴答案,您可以在其中粘贴有关问题某些方面的一些信息,但答案对于回答实际问题根本没有任何作用。我确定您不是故意的,但这是垃圾邮件。
      • 我同意它没有回答问题,当然我确实从某个地方获得了这些信息(来源已链接)。我将重点放在尚未考虑的某些方面(在这种情况下是问题)。我不想就答案争论不休,但我相信当你发布完全没有争议的东西时,它就是垃圾邮件。
      猜你喜欢
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 2019-12-14
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2018-02-23
      相关资源
      最近更新 更多