2011-02-09 65 views
7

我需要从SQL Server 2008中的类型列的一个是VARBINARY(MAX)读取数据行。在C#中,我想使用out参数来读取它(并且给定的场景大多满足需求)。读VARBINARY(MAX)从SQL Server到C#

但我需要指定的参数变量的大小,填补了C#的变量。 在这里,我认为8000就足够了...但谁知道:

database.AddOutParameter(command, "vbCertificate", DbType.Binary, 8000); 

所以问题是:

  1. 什么是MAX的数量规模为SQL Server 2008?
  2. 可以使用这个场景的参数吗?

回答

4

正如@marc_s所说,我只想添加一些东西。

有两种数据类型

二进制 [(N)]

固定长度,长度为n字节,其中n是从1到8000的值的二进制数据。存储大小为n个字节。

VARBINARY [(N | MAX)]

可变长度的二进制数据。 n可以是从1到8,000的值。 max表示最大存储大小是2^31-1(等于int.MaxValue,即2,147,483,647)个字节。存储大小是输入数据的实际长度+ 2个字节。输入的数据可以是0字节。

如果您指定最大那么你关注的应该是用VARBINARY而非二进制

database.AddOutParameter(命令, “vbCertificate”,DbType.Binary,8000);

database.AddOutParameter(command,“vbCertificate”,SqlDbType.VarBinary,int.MaxValue);

1

我还没有看到一个明确的大小任何地方MAX。你有没有尝试过使用DbType.Object执行此操作?这在msdn上被定义为任何未明确定义的类型的一般类型。我会试试看看它是否有效。否则,我可能会坚持你所选择的DbType.Binary。

5

的最大尺寸为VARBINARY(MAX)是2GB的数据 - 2'147'483'648字节。

在你的情况,在C#中定义它的时候,我会建议使用int.MaxValue以提供价值。

是的,如果你想获得的字节数组从SQL Server 2008表背,那么你就可以最肯定使用out参数。

+3

最大类型的SqlClient大小为`-1`。该框架将此理解为“最大”类型。 – 2011-02-09 17:48:41

+0

@Remus Rusanu:好的,谢谢 - 很高兴知道! (但我也没有int.MaxValue的麻烦,到目前为止:-) – 2011-02-09 17:54:22

相关问题