asp.net 里出现“不存在从对象类型xx 到已知的托管提供程序本机类型的映射”


虽然花了点时间,但最终终于解决了。
原因:数据库里的字段类型和ADO.NET传给数据库将要执行的 字段类型不匹配。

解决办法:用了SqlParameter给SQL语句或存错过程的参数赋值就说明下参数类型。例如我的:

===================================

SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@bianma",spzd.bianma),
new SqlParameter("@zwmc", spzd.zwmc)

};

====================================

要改为:

===================================

SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@bianma",SqlDbType.Char),
new SqlParameter("@zwmc", SqlDbType.Char)

};

paras[0].Value = spzd.bianma;
paras[1].Value = spzd.zwmc;

====================================

在我的情况中,数据库字段的类型是char。如果没有明确指明SqlParameter里参数的类型,默认是varchar。这就是导致这个异常的原因。

 

BTW:我无意想说char和varchar的优劣。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM