[英]Read VARBINARY(MAX) from SQL Server to C#
我需要从SQL Server 2008读取数据行。其中一列的类型是VARBINARY(MAX)
。 在C#中,我想使用out参数来读取它(并且给定的场景主要满足需求)。
但我需要指定参数变量大小来填充C#变量。 在这里我假设8000就够了......但谁知道:
database.AddOutParameter(command, "vbCertificate", DbType.Binary, 8000);
所以问题是:
VARBINARY(MAX)
的最大大小为2 GB数据 - 2'147'483'648字节。
在您的情况下,当在C#中定义它时,我建议使用int.MaxValue
作为要提供的值。
是的,如果你想从SQL Server 2008表中获取字节数组,那么你绝对可以使用out
参数。
正如@marc_s所说,我只想添加一些东西。
有两种数据类型
二进制 [(n)]
固定长度的二进制数据,长度为n个字节,其中n是1到8,000的值。 存储大小为n个字节。
varbinary [(n | max)]
可变长度的二进制数据。 n可以是1到8,000之间的值。 max表示最大存储大小为2 ^ 31-1(等于int.MaxValue,即2,147,483,647)个字节。 存储大小是输入数据的实际长度+ 2个字节。 输入的数据长度可以是0个字节。
如果你指定max,那么你的关注点应该是varbinary而不是binary
database.AddOutParameter(command,“vbCertificate”,DbType.Binary,8000);
database.AddOutParameter(command,“vbCertificate”,SqlDbType.VarBinary,int.MaxValue);
我没有在MAX的任何地方看到明确的大小。 您是否尝试使用DbType.Object执行此操作? 这在msdn上定义为任何未明确定义的类型的通用类型。 我会尝试,看看它是否有效。 否则,我可能会选择DbType.Binary。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.