C#基礎——winform應用上傳圖片到SQLServer數據庫


前言

之前通過winform與SQL Server的交互一直局限於文本、數字等信息,都可以通過string的方式來傳輸,但是比如音樂、圖片等特殊格式的文件要如何與SQL Server數據庫進行交互呢?

今天主要講通過文件流的方式,將特殊文件轉換成二進制,然后存儲到數據庫中。在實際的應用中,如果文件較大或者較多,直接存儲在數據中會造成一定的壓力,可以轉為保存文件名,然后在實際使用的地方調用改文件名對應的文件。

主要內容

上圖為圖片上傳winform的內容。

1、選擇圖片按鈕,功能為通過對話框選擇要上傳的文件,並將該文件在下面的pictureBox中顯示出來。具體代碼如下:

 private void btn_Choose_Click(object sender, EventArgs e)
        {
            UserMethod.ShowPic(this.pictureBox1);
        }
 1  public static void ShowPic(PictureBox picBox) 
 2         {
 3             OpenFileDialog ofd = new OpenFileDialog();
 4             ofd.InitialDirectory = @"E:\";
 5             ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files(*.*)|*.*";
 6             ofd.RestoreDirectory = true;
 7 
 8             if (ofd.ShowDialog() == DialogResult.OK)
 9             {
10                 picAddress = ofd.FileName;
11                 Image imge = Image.FromFile(picAddress);
12                 Bitmap bm = new Bitmap(imge, picBox.Width, picBox.Height);
13                 picBox.Image = bm;
14             }
15         }

ShowPic()方法為靜態方法,可以直接調用,其中的picAddress變量為靜態全局變量,用於記錄要上傳文件的文件地址。picturebox顯示圖片的方式,是通過pictbox的image屬性設定的,將圖片轉成Bitmap格式,位圖文件是最簡單的圖片格式。

2、上傳圖片,該按鈕的功能是將選定的圖片上傳到數據庫中,具體的實現代碼如下:

 1  private void btn_Upload_Click(object sender, EventArgs e)
 2         {
 3             if (UserMethod.picAddress == null)
 4             {
 5                 Byte[] pic = UserMethod.GetContent(UserMethod.picAddress);
 6                 string sql = "insert into tb_MyPic values(@Picture,@PicCategory)";
 7                 SqlParameter[] param = new SqlParameter[2];
 8                 param[0] = new SqlParameter("@Picture", pic);
 9                 param[1] = new SqlParameter("@PicCategory", this.cmbCatogery.Text.Trim());
10                 if (DataBase.getExecuteQuery(sql, param) != 0)
11                 {
12                     MessageBox.Show("添加成功!");
13                 }
14             }
15             else
16             {
17                 MessageBox.Show("請先選擇圖片!");
18             }
19         }
1      public static string picAddress = string.Empty;
2         public static Byte[] GetContent(string filepath)//將指定路徑下的文件轉換成二進制代碼,用於傳輸到數據庫
3         {
4             FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
5             Byte[] byData = new Byte[fs.Length];//新建用於保存文件流的字節數組
6             fs.Read(byData, 0, byData.Length);//讀取文件流
7             fs.Close();
8             return byData;
9         }

上傳的過程大概就是:根據文件地址將對應文件轉換成數據流二進制格式-->編寫對應的SQL語句-->執行該SQL語句,將圖片添加到數據庫中。

3、使用sql Parameter[]的SQL執行方法,因為傳統的sql語句對應的value終歸是string或者int之類的格式,可以在sql語句中寫一下,但是使用Parameter的方式可以更加簡潔、明了、減少失誤。具體的執行sql語句方法參考如下代碼:

1  public static int getExecuteQuery(string sql, SqlParameter[] param)
2         {
3             getcon();
4             SqlCommand sqlcom = new SqlCommand(sql, My_Conn);
5             sqlcom.Parameters.AddRange(param);
6             return sqlcom.ExecuteNonQuery();
7         }

 

OK,下次會跟大家講一下如何從sql數據中下載圖片顯示到winform中來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM