byte[] buffer = (byte[])dt.Rows[0].ItemArray[4];
 MemoryStream ms = new MemoryStream(buffer);
 pictureBox1.Image = Image.FromStream(ms);
 提示无法将DBNull对象强制转换成Byte[]类型,是一个什么原因?该如何插入图片呢?

解决方案 »

  1.   

    if(dt.Rows[0].ItemArray[4]!=DBNull.Value)
      

  2.   

    插入图片:
    using (MySqlConnection con = new MySqlConnection(strCon))
                {
                    using (MySqlCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "insert into tb_worker values('318','朱攀11','软工','研                       发',@headimag,'1223')";
                        con.Open();
                        cmd.Parameters.Add("@headimag", SqlDbType.Image);
                        MemoryStream ms = new MemoryStream();
                        Image.FromFile("P1060297.jpg").Save(ms,     System.Drawing.Imaging.ImageFormat.Jpeg);
                        cmd.Parameters["@headimag"].Value = ms.GetBuffer();
                        ms.Close();
                        int res = cmd.ExecuteNonQuery();
                        Console.WriteLine("成功插入了" + res + "条");
                    }
                }
    取图片:
       using (MySqlConnection con = new MySqlConnection(strCon))
                {
                    using (MySqlCommand cmd = con.CreateCommand())
                    {
                        con.Open();
                        cmd.CommandText = "select * from tb_worker where Epc='" + s + "'";                    DataTable dt = new DataTable();
                        MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
                        int fill = sda.Fill(dt);                    if (dt.Rows[0].ItemArray[4] != DBNull.Value)
                        {
                            byte[] buffer = (byte[])dt.Rows[0].ItemArray[4];
                            MemoryStream ms = new MemoryStream(buffer);
                            pictureBox1.Image = Image.FromStream(ms);
                        }
    帮忙看看有什么问题啊?
      

  3.   

    断点看一下插入的时候 ms.GetBuffer()是什么,res是不是<=0
      

  4.   


    不是啊。测试的时候res是等于1的。也就是说已经插入了一条数据。
      

  5.   

    但是查看数据库的时候发现blob这一栏是空的啊。为什么呢?
      

  6.   

    插入一个空行也不一定,看一下路径有没有错,取出来的byte[]是不是空的