C# 如何在picturebox中显示access db中的附件图像

C# 如何在picturebox中显示access db中的附件图像,c#,oledb,C#,Oledb,我试图在picturebox中显示数据库附件中的图像,但我在上出错 ImageByte=(byte[])vcom.ExecuteScalar(); 上面说 无法将“System.String”类型的对象强制转换为“System.Byte[]”类型 这是我的密码 byte[] ImageByte = null; MemoryStream MemStream = null; OleDbConnection cn = new OleDbConnection(); cn.ConnectionStri

我试图在picturebox中显示数据库附件中的图像,但我在上出错

ImageByte=(byte[])vcom.ExecuteScalar();
上面说

无法将“System.String”类型的对象强制转换为“System.Byte[]”类型

这是我的密码

byte[] ImageByte = null;
MemoryStream MemStream = null;

OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:/ALL/Database7.accdb";
cn.Open();

OleDbCommand command = new OleDbCommand();
command.Connection = cn;
string sql = "select Attachments from Contacts where ID = 1";
OleDbCommand vcom = new OleDbCommand(sql, cn);

ImageByte = (byte[]) vcom.ExecuteScalar();

MemStream = new MemoryStream(ImageByte);
pictureBox1.Image = Image.FromStream(MemStream);
cn.Close();

MSAccess
中,附件二进制数据位于附件字段的子元素中

这将返回一个
字节[]
。此字节[]由
MSAccess
填充,前20个字节包含
元数据

您可以使用Linq
.Skip()
删除前20个字节

string sql=“从ID=1的联系人中选择Attachments.FileData”;
OleDbCommand vcom=新的OleDbCommand(sql,cn);
字节[]图像字节=(字节[])vcom.ExecuteScalar()//包含20个额外字节
MemoryStream MemStream=新的MemoryStream(ImageByte.Skip(20.ToArray())//从位置20开始读取字节
Image=Image.FromStream(MemStream)//现在可以工作了
pictureBox1.图像=图像;
...

这行吗?

MSAccess
中,附件二进制数据位于附件字段的子元素中

这将返回一个
字节[]
。此字节[]由
MSAccess
填充,前20个字节包含
元数据

您可以使用Linq
.Skip()
删除前20个字节

string sql=“从ID=1的联系人中选择Attachments.FileData”;
OleDbCommand vcom=新的OleDbCommand(sql,cn);
字节[]图像字节=(字节[])vcom.ExecuteScalar()//包含20个额外字节
MemoryStream MemStream=新的MemoryStream(ImageByte.Skip(20.ToArray())//从位置20开始读取字节
Image=Image.FromStream(MemStream)//现在可以工作了
pictureBox1.图像=图像;
...

这行得通吗?

您能在问题中添加
联系人的表定义吗?附件列的
列类型是什么?
表名联系人,其中有名姓氏国家/地区。。。。。。。第18列中的附件有我从数据库中添加的图片,但“附件”列的类型是什么?我是说名为“附件”列的
数据类型是什么?是
长文本
OLE对象
超链接
附件
,还是其他?噢,it附件您可以在问题中添加
联系人
的表定义吗?附件列的
列类型是什么?
表名联系人,其中有名姓氏国家/地区。。。。。。。第18列中的附件有我从数据库中添加的图片,但“附件”列的类型是什么?我是说名为“附件”列的
数据类型是什么?它是
长文本
OLE对象
超链接
附件
,还是其他?噢,它附件是的,它传递了执行错误,但是
pictureBox1.Image=Image.FromStream(MemStream)上有一个错误错误为参数无效。您正在接收的
字节[]
包含MSAccess添加的元数据,你需要提取字节[]的一部分不是全部,我正在调整答案它第一次起作用非常感谢亲爱的乔纳坦你真的帮助了我,是否有速率或我可以做的事情我搜索了但没有找到它通过执行错误但在
pictureBox1.Image=Image.FromStream(MemStream)上出错错误为参数无效。您正在接收的
字节[]
包含MSAccess添加的元数据,您需要提取字节[]的一部分不是全部,我正在调整答案它第一次起作用非常感谢亲爱的Jhonathan您真的帮助了我,我可以做些什么吗我搜索了但没有找到