【问题标题】:What SqlDbType maps to varChar(max)?什么 SqlDbType 映射到 varChar(max)?
【发布时间】:2009-02-27 19:29:15
【问题描述】:

什么 SqlDbType 映射到 varChar(max)? SqlDbType.VarChar 说它被限制为 8K,尽管这可能是文档错误。

【问题讨论】:

  • 目前我看到 3 个不同的答案,您实际使用的是哪种解决方案?
  • 最后我发现不显式设置 SqlDbType 是最好的方法。它更不容易出错,并且在更改存储过程时不必更改。
  • 但是现在您的代码在每次将不同长度的字符串传递给 SP 时都在构建执行计划。这不是最佳的。 MSDN 显示使用 -1,如下 eglasius 所述。
  • 好点,但仍然不值得痛苦。

标签: sql-server ado.net


【解决方案1】:

实际上你可以将它与 VarChar 一起使用。如果它是一个参数,你可以使用:new SqlParameter("@myparam", SqlDbType.NVarChar, -1)

见:http://msdn.microsoft.com/en-us/library/bb399384.aspx

【讨论】:

【解决方案2】:

好的...终于想通了...如果您收到错误说明:“ 字符串 [0]:Size 属性的大小为 0 无效。” 您只需将输出 SQL 参数的 size 参数设置为:

Dim parameter As SqlParameter = New SqlParameter("@FinalImportCount", SqlDbType.NVarChar)
parameter.Direction = ParameterDirection.Output
parameter.Size = 4000
cmd.Parameters.Add(parameter)

希望这对某人有所帮助 - 已经尝试了 2 个小时来解决这个问题.... grrrrr.

【讨论】:

    【解决方案3】:

    使用 VarChar,并将大小设置为 2147483647 (2gb-1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-13
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多