1.資料庫名為Demo,數據結構如圖 2.後臺代碼如下 ...
小子菜鳥一枚,剛畢業,第一次寫博客,經歷了一段工作經歷後覺得還是覺得得把一些東西記錄下來才好,最近在搞資料庫方面的知識,以後會貼一些資料庫方面的的帖子 ,用來加深記憶的!
1.資料庫名為Demo,數據結構如圖,image類型是用來保存byte[]數組的
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; } }
好了,就到這了,不夠150字居然不給發佈了,我湊夠字數先。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。