1.數據庫名為Demo,數據結構如圖
2.後台代碼如下
class Program { public static readonly string conStr = "Data Source = .;Initial Catalog = Demo;Integrated Security = SSPI;"; static void Main(string[] args) { #region 圖片轉為二進制流寫進數據庫 byte[] buffer = ImageToByte(@"G:\2.jpg"); if (PushDataBase(buffer) > 0) { Console.WriteLine("OK"); Console.Read(); } #endregion #region 二進制流轉圖片 //byte[] gBuffer = GetDataBase(3); //ByteToImage(gBuffer); //Console.WriteLine("OK"); //Console.Read(); #endregion } /// <summary> /// 圖片轉二進制流 /// </summary> /// <param name="imgPath">圖片路徑</param> /// <returns></returns> public static byte[] ImageToByte(string imgPath) { Image image = Image.FromFile(imgPath); using (MemoryStream ms = new MemoryStream()) { image.Save(ms, image.RawFormat); byte[] buffer = new byte[ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Read(buffer, 0, buffer.Length); return buffer; } } /// <summary> /// 字節流轉圖片 /// </summary> /// <param name="buffer">圖片二進制流</param> public static void ByteToImage(byte[] buffer) { MemoryStream ms = new MemoryStream(); ms.Write(buffer, 0, buffer.Length); Image img = Image.FromStream(ms); string file = "mypicture2"; if (img.RawFormat == ImageFormat.Jpeg) { file += ".jpg"; } else if (img.RawFormat == ImageFormat.Png) { file += ".png"; } else { file += ".jpg"; } File.WriteAllBytes(file, buffer); } /// <summary> /// 寫進數據庫 /// </summary> /// <param name="buffer">圖片二進制流</param> /// <returns></returns> public static int PushDataBase(byte[] buffer) { using (SqlConnection conn = new SqlConnection(conStr)) { using (SqlCommand com = new SqlCommand()) { com.Connection = conn; conn.Open(); com.CommandText = "insert into ImageData values(@image)"; com.Parameters.Add("@image", SqlDbType.Image).Value = buffer; return com.ExecuteNonQuery(); } } } /// <summary> /// 從數據庫中讀取 /// </summary> /// <returns></returns> public static byte[] GetDataBase(int id) { using (SqlConnection conn = new SqlConnection(conStr)) { using (SqlCommand com = new SqlCommand()) { com.Connection = conn; conn.Open(); com.CommandText = "select ImageByte from ImageData where Id=@id"; com.Parameters.Add("@id", SqlDbType.Int).Value = id; using (SqlDataReader reader = com.ExecuteReader()) { if (reader.Read()) { return (byte[])reader[0]; } } } } return null; } }