什么时候sqlchars和sqlstring?

时间:2011-11-10 07:00:04

标签: c# sql-server clr

我正在用c#开发一个CLR应用程序。 我遇到SqlChars类型和SqlString。 但我没有发现它们之间的区别。 什么时候使用SqlChars并使用SqlString?

感谢

3 个答案:

答案 0 :(得分:5)

我为复制当前所选答案中的一些数据而道歉,但我想尝试提供一点澄清。

首先,答案简短:

我对何时使用SqlChars vs SqlString的建议与你的意图有关。如果您不打算修改输入字符串,请使用SqlString。如果需要操作输入,请使用SqlChars。

现在有关我如何到达那里的一些细节:

我们可以从文档中看到 SqlChars SqlString 结构。类与结构超出了此响应的范围,但足以说结构的重量更轻。您还可以看到SqlChars是可变的(您可以更改它而无需新的内存分配)。我找不到指向SqlString的大小限制的文档,并且我没有使用大于VARCHAR(8000)/ NVARCHAR(4000)的数据与SqlString有任何问题。如果您遇到问题,请确保您的CLR代码具有MaxByteSize = -1。

以下信息来自SQL Types

的MSDN文档

  

SqlChars是一个可变引用类型,它包装Char数组或SqlString实例。

结构

  

SqlString - 表示要存储在数据库中或从数据库中检索的可变长度字符流。 SqlString与其对应的.NET Framework String数据类型具有不同的底层数据结构。

答案 1 :(得分:4)

- SQL String是.net framework中的sqltype。它表示要存储在数据库中或从数据库中检索的可变长度字符流。

- SQLChar是一个包含Char数组或SqlString实例的可变引用类型。    SqlChar是一个类。 你发现的是正确的,sqlstring仅限于nvarchar(4000),sqlchars是nvarchar(max)。 (但我们可以使用SqlFacet属性定义参数和返回类型的大小,精度和比例。)

答案 2 :(得分:-2)

请允许我引用先生。 alastair:sqlchar对系统内存资源的要求不高,因为它不像sqlstring那样需要一块contiguos性质。