C#操作SQLserver的图片,读取和存储

一,用C#将Image转换成byte[]并插入数据库:

   1.1 将图片控件的Image转换成流:

  private byte[]  PicToArray()
        {
          
            Bitmap bm = new Bitmap(picBox.Image);
            MemoryStream ms = new MemoryStream();
            bm.Save(ms, ImageFormat.Jpeg);
            return ms.GetBuffer();

        }
        
//保存到数据库
try { string sql = "update T_Employee set ImageLogo=@ImageLogo where Emp; SqlHelper.ExecuteNonQuery(sql, new SqlParameter("@ImageLogo", imgSourse)); MessageBox.Show("修改已保存!");// ShowInfo(0); } catch (Exception ex) { MessageBox.Show("更新失败!" + ex.Message); return; }

  1.2将图片文件转换成字节流并插入数据库:

 class ImageInserter
    {
        public static int InsertImg(string path)
        {
           
            //----------以文件的方式读取图片并转化成字节流
            FileStream fs = new FileStream(path,FileMode.Open);
            byte[] imgSourse = new byte[fs.Length];
            fs.Read(imgSourse,0,imgSourse.Length);
            fs.Close();

            using (SqlConnection conn = new SqlConnection(SqlHelper.connStr))
            {
                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "update T_Employee set  ImageLogo=@ImageLogo";
                  //  cmd.Parameters.Add("@ImageLogo", SqlDbType.Image);
                    cmd.Parameters.Add(new SqlParameter("@ImageLogo", imgSourse));

                    return cmd.ExecuteNonQuery();
                }
            }
       }

二、将图片数据从SQLserver中取出来并显示到pictureBox控件上:

  

       byte[] ImageLogoArray = row["ImageLogo"] is DBNull ? null :(byte[])(row["ImageLogo"]);
            MemoryStream ms=null;
            if (ImageLogoArray!=null)
            {
                ms = new MemoryStream(ImageLogoArray);
                picBox.Image = new Bitmap(ms);
            }