You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中从SQL Server参数获取字节数组?

解决SQL Server输出参数字节数组转换问题

你遇到的问题很常见——当直接对cmd.Parameters["@Image1"].Value调用ToString()时,得到的只是数组的类型名称System.Byte[],而非实际的字节数据。这是因为数组的默认ToString()方法只会返回类型标识,不会序列化内容。

正确的做法是直接将Value强制转换为byte[]类型,毕竟你定义的参数类型是SqlDbType.VarBinary,返回的Value本质上就是装箱后的字节数组:

cmd.Parameters.Add("@Image1", SqlDbType.VarBinary).Size = 5000000;
cmd.Parameters["@Image1"].Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();

// 直接强制转换为byte[]
byte[] imageBytes = (byte[])cmd.Parameters["@Image1"].Value;

// 后续就可以用这个字节数组保存为图片,示例:
// File.WriteAllBytes(@"C:\your\save\path\image.jpg", imageBytes);

为了避免潜在的空值或DBNull报错,建议先做个安全判断:

if (cmd.Parameters["@Image1"].Value != DBNull.Value)
{
    byte[] imageBytes = (byte[])cmd.Parameters["@Image1"].Value;
    // 执行图片保存逻辑
}
else
{
    // 处理参数未返回数据的场景
}

这样就能拿到完整的字节数组,顺利保存成图片文件啦。

内容的提问来源于stack exchange,提问作者SomethingCool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:01:22