一,用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); }