我正在用c#开发一个CLR应用程序。 我遇到SqlChars类型和SqlString。 但我没有发现它们之间的区别。 什么时候使用SqlChars并使用SqlString?
感谢
答案 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)