虽然花了点时间,但最终终于解决了。
原因:数据库里的字段类型和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的优劣。