将 bytearray 保存到 SQL Server 中的 VarBinary 列只插入一个字节

pza*_*zaj 4 c# sql-server bytearray varbinary

我有以下问题 - 我正在尝试保存byte[]到数据库,但我发现它仅适用于一个字节。

我有一些浮点数可以转换为 byte[] 并将其用作参数:

param = new SqlParameter(name, type, ((byte[])value).Length);
Run Code Online (Sandbox Code Playgroud)

类型是VarBinary,值是字节数组。

我将该参数添加到 my 中SqlCommand,就在它被执行之前,整个字节数组“位于”该参数中,并且_msize该参数是正确的(我认为 20 字节为 20 字节是正确的)。我的 SQL Server 显示我只保存了 1 个字节,也试图检索它我只得到一个字节。我的专栏是VarBinary(200)

有什么建议?

mar*_*c_s 5

如果您使用的是存储过程,并且您已将参数定义为varbinary-根据MSDN 文档,您将获得1 个字节的默认长度:

当 n在数据定义或变量声明语句中指定时,默认长度为 1。当 CAST 函数未指定 n 时,默认长度为 30。

所以如果你有一个存储过程

@MyData VARBINARY
Run Code Online (Sandbox Code Playgroud)

那么你只有一个字节——你需要把它改成类似的东西

@MyData VARBINARY(200) 
Run Code Online (Sandbox Code Playgroud)

或者其他适合你的东西