当前位置: 首页 > 编程语言 > C#

InvalidparameterwhenretrievingimagefromDBShare

时间:2023-04-10 14:09:55 C#

InvalidparameterwhenretrievingimagefromDB最后,我想从Access数据库中获取一张OLE类型的图片,放到一个图片框中。在C#和MSAccess2010中使用VisualStudio2012。我的解决方案是一个非Web相关的应用程序。所以这是查询代码。我正在构建一个包含System.Drawing.Image属性的对象(Equipamento),这是这个问题的重点。OleDbConnectionl=OleDbConnectionDAO.createConnection();Equipamentoeq=newEquipamento();尝试{OleDbDataAdapteradapter=newOleDbDataAdapter("SELECT*FROM[APP_Equipamento_Geral]WHERECOD_ETIQlike'%"+codigo+"%'",l);数据集ds=new数据集();adapter.Fill(ds,"[APP_Equipamento_Geral]");字符串s=ds.Tables["[APP_Equipamento_Geral]"].Columns[16].ColumnName;foreach(DataRowrowinds.Tables["[APP_Equipamento_Geral]"].Rows){eq.NInventario=row["Codigo"].ToString();eq.Modelo=row["MODELO"].ToString();eq.Marca=row["Marca_"].ToString();eq.GamaMedida=row["GamaMedida"].ToString();if(row["FOTO"]!=DBNull.Value&&row["FOTO"]!=null){byte[]b=newbyte[0];b=(byte[])row["FOTO"];eq.Img=getImageFromBytes(b);//此处捕获错误}//if(row["FOTO"]!=DBNull.Value&&row["FOTO"]!=null)//{//byte[]b=(字节[])行[“照片”];//内存流ms=new内存流(b);//eq.Img=Image.FromStream(ms);//错误在这里捕获//}}}这是辅助方法:privateImagegetImageFromBytes(byte[]myByteArray){System.IO.MemoryStreamnewImageStream=newSystem.IO.MemoryStream(myByteArray,0,myByteArray.Length);返回Image.FromStream(newImageStream,true);}最后注释的那段代码是我的又一次尝试,同样报了invalidparameter的错误。有解决办法吗?注意:如果我取出图像部分,一切正常。存储为OLE对象的图像与序列化的System.Drawing.Images具有不同的格式。这就是为什么我要问图像是如何存储的。虽然我不能保证这一点,但我个人从未使用过它,我们推荐以下代码。据推测,它使用MS的GDI+库(包含在Win标准安装中)在AccessOLE中导入/导出图片。http://sofzh.miximages.com/c%23/pprecodepublicbyte[]imageToByteArray(System.Drawing.ImageimageIn){MemoryStreamms=newMemoryStream();imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);返回ms.ToArray();}将arraybite转为图片并使用C#学习教程,希望大家多多关注—publicImagebyteArrayToImage(byte[]byteArrayIn){MemoryStreamms=newMemoryStream(byteArrayIn);图像returnImage=Image.FromStream(ms);返回返回图像;}本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: