2014-12-08 106 views
0

我有一個C#Windows應用程序,它將僱員數據存儲到MYSQL數據庫中,包括他們的圖片。但試圖將圖像文件插入到MYSQL Blob字段時,圖片未保存。將圖像保存到MYSQL Blob字段

請幫忙。這是代碼。

 OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     openFileDialog1.InitialDirectory = "\\\\192.168.13.6\\ID Pictures"; 
     openFileDialog1.Filter = "jpg files (*.jpg)|*.txt|All files (*.*)|*.*"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 
     int size = -1; 
     DialogResult result = openFileDialog1.ShowDialog(); 
     if (result == DialogResult.OK) // Test result. 
     { 
      file = openFileDialog1.FileName; 
      try 
      { 
       pnl_Picture.BackgroundImage = Image.FromFile(file); 
      } 
      catch (IOException) 
      { 
      } 
     } 

       conn.Open(); 
       FileStream fs; 
       BinaryReader br; 

       byte[] ImageData; 
       fs = new FileStream(file, FileMode.Open, FileAccess.Read); 
       br = new BinaryReader(fs); 
       ImageData = br.ReadBytes((int)fs.Length); 
       br.Close(); 
       fs.Close(); 

       OdbcCommand command = new OdbcCommand("INSERT INTO tbl_employee  (Picture) VALUES ('"+?Image2+"')", conn); 
       OdbcParameterCollection parameters = command.Parameters; 
       parameters.Add("?Image2", OdbcType.Image); 
       parameters["?Image2"].Value = ImageData; 
       command.ExecuteNonQuery(); 
       conn.Close(); 
+0

不要那樣做。改爲保存圖像路徑。 – Rafael 2014-12-08 05:33:06

+0

這就是我之前做的。文件的路徑是保存在數據庫中的路徑。但是在我的水晶報告中顯示圖像時遇到了麻煩。這就是爲什麼我決定保存圖像本身而不是路徑。 – JasonX 2014-12-08 05:37:07

+0

只要您引用了正確的文件路徑並從數據庫獲取文件名,則在報告中顯示圖像應該不會成爲問題。 – Rafael 2014-12-08 05:38:39

回答

0

對於Visual Studio,有MySql provider代替Odbc。 您可以添加參數,像這樣:

parameters.Add(new MySqlParameter("Image2", ImageData)); 
+0

我試過參數.Add(新的OdbcParameter(「Image2」,ImageData)); 未返回錯誤,但仍未將圖像保存到數據庫中。 – JasonX 2014-12-08 06:20:01

+0

因此,請先嚐試使用MySql提供程序。 – 2014-12-08 16:42:25