对象类型系统中不存在映射。\uuu ComObject到已知的托管提供程序本机类型。c#
我想将pdf文件从扫描仪上载到数据库(SQL Server),但收到错误消息: System.ArgumentException:'不存在从对象类型System.\u ComObject到已知托管提供程序本机类型的映射。' 我正在使用VisualStudio2019 这是我的代码:对象类型系统中不存在映射。\uuu ComObject到已知的托管提供程序本机类型。c#,c#,sql,sql-server,C#,Sql,Sql Server,我想将pdf文件从扫描仪上载到数据库(SQL Server),但收到错误消息: System.ArgumentException:'不存在从对象类型System.\u ComObject到已知托管提供程序本机类型的映射。' 我正在使用VisualStudio2019 这是我的代码: escaneRDesponsible=manejadorddisp.deviceInfo[i]; Device dispositivo=escanerDisponsible.Connect(); 项目objetoEs
escaneRDesponsible=manejadorddisp.deviceInfo[i];
Device dispositivo=escanerDisponsible.Connect();
项目objetoEscaneado=处置项目[1];
Escaner.AjustesScaner(对象扫描起始、分辨率、0、0、宽度、高度、0、0、颜色);
con.Open();
SqlCommand inserta=new SqlCommand(“更新INSPECCIONESTIONDOCUMENTAL SET NUMEOINSPECCION=NUMEOINSPECCION,NUMEROPROPESTA=NUMEROPROPESTA,placa=placa,documento=@documento,其中placa=”“+tNumeroPlaca.Text+””和NUMEROPROPESTA=“+TNUMERPROPUESTA.Text+”;”,con);
inserta.Parameters.AddWithValue(“@documento”,objetoEscaneado);
SqlParameter addDocumento=新的SqlParameter(“@documento”,objetoEscaneado);
addDocumento.Direction=参数Direction.Output;
inserta.ExecuteReader();
MemoryStream ms=新的MemoryStream();
inserta.ExecuteReader().Read();
var bytes=新字节[(inserta.ExecuteReader().GetBytes(0,0,null,0,int.MaxValue))];
inserta.ExecuteReader().GetBytes(0,0,bytes,0,bytes.Length);
ms.Write(字节,0,字节.长度);
MessageBox.Show(“Documento insertado”);
con.Close();
此处:
inserta.Parameters.AddWithValue("@documento", objetoEscaneado);
将类型为Item
的对象作为参数添加到SQL中。ADO.NET不知道如何将项
转换为SQL Server能够理解的数据类型(“已知的托管提供程序本机类型”),这就是您收到错误消息的原因
要解决此问题,请改用SQL Server能够理解的数据类型(例如,字符串或字节数组)。我不熟悉您使用的库,但很可能Item
具有允许您以字节数组形式访问文档的属性或方法
哦,作为旁注:也请使用WHERE参数的参数,有关详细信息,请参见此问题:
objetoEscaneado
(或扫描仪API的文档)的方法/属性。objetoEscaneado是我扫描的pdf,我将其保存为一个项目。