取得数据库图片字段的byte[], 读到MemoryStream中, 再赋给Image.FromStream(stream);

解决方案 »

  1.   

    byte[] imagedata=(byte[])(dataSet1.Tables["employees"] .Rows[i]["照片"]);
    MemoryStream ms=new  MemoryStream(imagedata);
    Bitmap bmp=new Bitmap(ms);
    出错:参数不对
      

  2.   

    哪句报错?
    MemoryStream ms = new MemoryStream();
    ms.Write(imagedata, 0, imagedata.Length);
    Bitmap bmp = new Bitmap(ms);
      

  3.   

    还是抱错
    使用了无效参数
    但是注掉Bitmap bmp = new Bitmap(ms);就对了
      

  4.   

    System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
    picturebox1.Image = img;
      

  5.   

    可能是这错了, 
    不要把它读到dataset中, 你用SqlDataReader来读
    byte[] imagedata = (byte[])read["照片"];
      

  6.   

    SqlConnection cn=new SqlConnection(sqlstr);
    cn.Open();
    SqlCommand cmd=cn.CreateCommand();
    cmd.CommandText="select 照片 from employees ";
    SqlDataReader dr=cmd.ExecuteReader();
    if(dr.Read())
    {
    byte[] imagedata=(byte[])dr["照片"];
    MemoryStream sm = new MemoryStream();
    sm.Write(imagedata, 0, imagedata.Length);
    Image img = Image.FromStream(sm);
    pictureBox1.Image = img;
    }cn.Close();
    出错信息:指定转换无效
      

  7.   

    哦? 哪行报的错?还是Image img = Image.FromStream(sm);????是不是图片的内容本身就是错的?
      

  8.   

    用System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
    也一样,
    看看我的储存图象
    private void imagestore()
    {
    ///储存图象
       SqlConnection cn=new SqlConnection(sqlstr);
       cn.Open();
       try
      {

    byte[] imagedata=loadimg();

    MessageBox.Show(imagedata.ToString());

    SqlCommand imc=cn.CreateCommand();

    imc.CommandText=@"insert into employees ('照片') values (imagedata)";

    imc.ExecuteNonQuery();

    }

    catch(Exception x)

    {MessageBox.Show(x.Message.ToString()+"dfgdf");}

    finally

    {

    cn.Close();

    }

    }byte[] loadimg()
    {

    try

    //MessageBox.Show(Connectstr);
        
    FileStream fs=new FileStream(Connectstr,FileMode.Open );

    BinaryReader br=new BinaryReader(fs);
    byte[] imagebyte=br.ReadBytes(maximagesize);
    fs.Close();
    return imagebyte;

    }
    catch(Exception x)
    {MessageBox.Show("erwrw"+x.Message.ToString());return null;}

    } }
      

  9.   

    你存时就错了, 应该用参数的方法imc.CommandText=@"insert into employees ('照片') values (@imagedata)";
    imc.Parameters.Add("@imagedata", SqlDbType.Image, imagedata.Length, "imagedata").Value = imagedata;
      

  10.   

    cmd.CommandText="select 照片 from employees where id=1";
    出错:
    使用了无效参数
      

  11.   

    但是数据库中好象已经储存成功了
    显示byte[] 数组
      

  12.   

    cmd.CommandText="select 照片 from employees where id=1";
    这句出错我也想不通; :(你为什么不用 SqlCommand cmd = new SqlCommand("select 照片 from employees where id=1", cn);
      

  13.   

    那是一样的
    因为: SqlCommand imc=cn.CreateCommand();