2014-12-08 129 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