使用C#.NET从MS Access OLE对象中提取图像

时间:2014-12-23 11:30:48

标签: c#-4.0 ms-access-2007

我们在MSAccess中有一个遗留系统,它有一个“OLE对象”列来存储图像。 现在,我们尝试创建一个小的可执行文件,使用C#将“OLE对象”转换回图像文件。 我们开始知道用户截取并粘贴到MSAccess列。

但是从访问中检索数据时,它返回字节但抛出'参数无效。'异常 在做Image.FromStream(ms)时。

这是我的示例代码。

//Connect to MSAccess database
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
  DataTable dt = new DataTable();
  using (OleDbCommand cmd = new OleDbCommand(commandText, conn))
  {
    using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
    {
      da.Fill(dt);
      if (dt != null && dt.Rows.Count > 0)
      {
                                foreach (DataRow dr in dt.Rows)
                                {
                                    Byte[] imageBytes = dr[0] as Byte[];                                    
                                    MemoryStream ms = new MemoryStream(imageBytes);
                                    Image img = Image.FromStream(ms);
                                    img.Save(destinationPath + "Image1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);                                    
                                }
                            }
                        }
                    }
                }
       finally
       {
         conn.Close();
       }
} 

非常感谢任何帮助。

0 个答案:

没有答案