无法将类型为“System.DBNull”的对象强制转换为“System.Byte []”。错误

时间:2015-11-09 21:39:54

标签: c# winforms

到目前为止,这是我在数据库中放置picturebox1图片所做的工作,但现在我收到了这个错误:

  

无法将System.DBNull类型的对象转换为System.Byte[]类型。

此平台已有的解决方案无效。

Image img;
byte[] bytimg = (byte[])dt.Rows[0]["Picture"];

//convert byte of imagedate to Image format
using (MemoryStream ms = new MemoryStream(bytimg, 0, bytimg.Length))
{
    ms.Write(bytimg, 0, bytimg.Length);

    img = Image.FromStream(ms, true);

    pictureBox1.Image = img;
}

2 个答案:

答案 0 :(得分:4)

使用以下方法检查:

if(dt.Rows[0]["Picture"] != System.DBNull.Value)
{
   ...
}

您也可以添加一些其他验证:

if(dt != null && dt.Rows != null && dt.Rows.Count > 0
   && dt.Rows[0]["Picture"] != System.DBNull.Value)
{
   ...
}

很高兴为您服务!

答案 1 :(得分:0)

将您的代码更改为:

Image img;

if(dt.Rows[0] != System.DBNull.Value)
{

    byte[] bytimg = (byte[])dt.Rows[0]["Picture"];

    //convert byte of imagedate to Image format
    using (MemoryStream ms = new MemoryStream(bytimg, 0, bytimg.Length))
    {

        ms.Write(bytimg, 0, bytimg.Length);

        img = Image.FromStream(ms, true);

        if (img != null)
        {
            pictureBox1.Image = img;
        }

    }

}