c#picturebox的Microsoft access附件

c#picturebox的Microsoft access附件,c#,C#,当我将access连接到C#forms时,一切正常,但我无法将附件文件连接到picturebox。我得到一个带有以下文本的错误消息框:索引超出了数组的边界。 尝试直接从流分配图像 byte[] imageBytes = (byte[])reader.GetValue(6); comm = new OleDbCommand(sqlCommand, sqlConnection); ImageByte = comm.ExecuteScalar(); MemoryStream ms = new Me

当我将access连接到C#forms时,一切正常,但我无法将附件文件连接到picturebox。我得到一个带有以下文本的错误消息框:
索引超出了数组的边界。


尝试直接从流分配图像

byte[] imageBytes = (byte[])reader.GetValue(6); 
comm = new OleDbCommand(sqlCommand, sqlConnection);
ImageByte = comm.ExecuteScalar();
MemoryStream ms = new MemoryStream(ImageByte);
poto.Image = Image.FromStream(ms);
如果仍然出现错误:

无法将“system.string”类型的对象强制转换为“system.byte[]”类型

可能您的sql查询中存在问题。调试并检查输出

MessageBox.Show(reader.GetValue(6).ToString());

尝试添加ms.Position=0;在ms.write之后,…@777chubinidze究竟是什么引发了这个错误?您能再给我们看一些代码吗?我想从access附件加载图片。这是代码:field reader=cmd.ExecuteReader();while(reader.Read()){byte[]imageBytes=(byte[])reader.GetValue(6);MemoryStream ms=new MemoryStream();ms.Write(imageBytes,0,imageBytes.Length);ms.Position=0;位图p=new位图(Image.FromStream(ms));poto.Image=p;很可能是您的
reader.GetValue(6);
调用引发了错误。您绝对确定reader/命令返回了7列吗?很抱歉,这是第5个字段,我已更改,但现在我得到:“无法将'system.string'类型的对象强制转换为'system.byte[]类型”
MessageBox.Show(reader.GetValue(6).ToString());