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 EmpId=@EmpId"; 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); }