В MSAccess
двоичные данные вложений находятся в подэлементе поля Attachment.
Это вернет byte[]
. Этот байт [] дополняется MSAccess
, первые 20 байтов содержат MetaData
.
Вы можете использовать Linq .Skip()
, чтобы избавиться от этих первых 20 байтов
string sql = "select Attachments.FileData from Contacts where ID = 1";
OleDbCommand vcom = new OleDbCommand(sql, cn);
byte[] ImageByte = (byte[]) vcom.ExecuteScalar(); //contains 20 extra bytes
MemoryStream MemStream = new MemoryStream(ImageByte.Skip(20).ToArray()); //Read bytes starting at position 20
Image image = Image.FromStream(MemStream); //Will work now
pictureBox1.Image = image;
...
Это работает?