C# 如何在picturebox中显示access db中的附件图像
我试图在picturebox中显示数据库附件中的图像,但我在上出错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
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您真的帮助了我,我可以做些什么吗我搜索了但没有找到