在C#開發應用程式的過程中,圖片一般會存放在文件系統中,當然圖片也可以二進位的方式存放到資料庫中,不過一般不建議存放在資料庫中,因為圖片占用的空間還是挺大的,特殊情況下可以考慮將圖片存在數據。此文將介紹如何將圖片存放在Sqlserver資料庫中,並從資料庫中讀取出圖片信息。 在將圖片存儲到資料庫之前 ...
在C#開發應用程式的過程中,圖片一般會存放在文件系統中,當然圖片也可以二進位的方式存放到資料庫中,不過一般不建議存放在資料庫中,因為圖片占用的空間還是挺大的,特殊情況下可以考慮將圖片存在數據。此文將介紹如何將圖片存放在Sqlserver資料庫中,並從資料庫中讀取出圖片信息。
在將圖片存儲到資料庫之前,需要先設計資料庫表,建議使用sqlserver的數據類型Image類型存儲數據,當然也有人使用二進位binary類型存儲。
一、將圖片寫入資料庫中的方法
在此方法中使用到FileStream類,該類在此的作用是將圖片讀取到文件流中。具體實現方法如下:
public void WriteImgToDb() { SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes"); conn.Open(); SqlCommand scmd = null; string Path = Application.StartupPath + "//Imgren"; //為獲取文件的根目錄 int j = 0; FileStream fs=null; for (int i = 1; i <= 13; i++) //利用迴圈添加一次添加圖片 { string sql = "insert into tb_Image values(@a,@b)"; //利用參數實現圖片添加 scmd = new SqlCommand(sql, scon); scmd.Parameters.Add("@a", SqlDbType.Int); scmd.Parameters["@a"].Value = i; //記住該方法,將值存入參數內 byte[] bt = new byte[10240]; //初始化圖片大小 //創建圖片寫入流 fs = new FileStream(Path + "//" + i + ".bmp", FileMode.OpenOrCreate, FileAccess.Read); fs.Read(bt, 0, bt.Length); //讀取圖片的位元組數 scmd.Parameters.Add("@b", SqlDbType.Image, (int)fs.Length); scmd.Parameters["@b"].Value = bt; //將圖片的位元組數存入參數內 j = scmd.ExecuteNonQuery(); } if (j > 0) MessageBox.Show("將圖片寫入資料庫成功!!!", "友好提示"); else MessageBox.Show("將圖片寫入資料庫失敗!!!", "友好提示"); fs.Close(); //關閉釋放流資源 }
二、將從資料庫中讀取圖片到picturebox控制項中(WinForm窗體控制項)。
此方法使用了MemoryStream類即記憶體流對象,同時使用了Image類,Image類是.NET Framework內部提供的圖片相關類。從Sqlserver資料庫中讀取圖片數據具體實現方法如下:
public void ReadDbImage() { SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes"); conn.Open(); SqlCommand scmd = null; string sql = "select I_image from tb_image where I_id=" +int.Parse(textBox1.Text.Trim()) + ""; scmd = new SqlCommand(sql, scon); SqlDataReader red = scmd.ExecuteReader(); if (red.Read()) { //創建支持存儲區的記憶體流 MemoryStream ms = new MemoryStream((byte[])red[0]); Image img = Image.FromStream(ms, true); //該方法: FromStream()為驗證圖像的流 this.pictureBox1.Image = img; } red.Close(); //關閉資源 }
擴展閱讀:C#工具類:使用SharpZipLib進行壓縮、解壓文件、微軟官方提供的Sqlserver資料庫操作幫助類SQLHelper類。
備註:原文轉載自C#將圖片以二進位流的方式存入資料庫_IT技術小趣屋。