【问题标题】:How to store a long string in a varchar(MAX) column by C# code?如何通过 C# 代码将长字符串存储在 varchar(MAX) 列中?
【发布时间】:2017-01-23 16:43:35
【问题描述】:

我在此站点中看到的所有相关主题都讨论了存储过程等。我有一个 C# 程序,它接收一个字符串(从哪里不重要,可能是文件或上传)并尝试将其插入到 varchar(MAX) 列中。我的代码是这样的:

command.Parameters.AddWithValue("@pxslt", mer.XsltTemplate);

它引发了一个错误:

字符串或二进制数据将被截断。

我改成:

command.Parameters.Add("@pxslt", SqlDbType.).Value = mer.XsltTemplate;

但它仍然会引发相同的错误。

解决办法是什么?我的字符串大小约为 8100 个字符。

【问题讨论】:

标签: c# sql-server insert varchar


【解决方案1】:

您可以使用以下语法:

command.Parameters.Add("@pxslt", SqlDbType.VarChar, -1).Value = mer.XsltTemplate;

注意:-1 等于 (MAX)。

【讨论】:

  • 我对此进行了测试,但仍然是同样的问题。我也测试了这个:command.Parameters.Add("@pxslt", SqlDbType.VarChar,mer.XsltTemplate.Length).Value = mer.XsltTemplate;
  • .XsltTemplate 是什么数据类型?我认为字符串?您能否也给我们存储过程的定义?请至少从 CREATE PROCEDURE 到 AS 子句?
  • 我不使用存储过程。作为提示,我使用 mdf 文件作为数据库。这可能会导致问题吗?
  • 啊,好吧,假设您使用 SQL Server 是因为 [sql] [server] 标签。如果您使用的是 MS Access,我猜您将构建一个 INSERT 语句而不是 EXECUTE 语句,这就是 command.Parameters 通常的用途。
【解决方案2】:

我明白了。由于另一个字段而引发错误。这是一个字段 varchar(15),程序尝试插入一个 20 个字符的字符串。我还注意到,即使没有转换为 DbType,varchar(max) 也可以工作。

【讨论】:

  • 很高兴您找到了解决方案 :-)
猜你喜欢
  • 2012-08-19
  • 1970-01-01
  • 2011-04-23
  • 2013-05-01
  • 1970-01-01
  • 2019-05-15
  • 2018-02-16
  • 2021-01-03
  • 2011-12-19
相关资源
最近更新 更多