如何解决SqlDataReader指定转换无效的问题

  介绍

这篇文章给大家分享的是有关如何解决SqlDataReader指定转换无效的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

SqlDataReader指定转换无效的解决方法,具体内容如下

如何解决SqlDataReader指定转换无效的问题

//获取最新显示顺序数据   字符串str=string.Format (@"如果存在(从GIS_FuncDefaultLayer选择ShowOrder GISFuncId={0})   选择马克斯(ShowOrder)从GIS_FuncDefaultLayer ShowOrder GISFuncId={0}   其他选择& # 39;0 & # 39;ShowOrder" GISFuncId);   IDataReader dataReader=helper.ExecuteReader (CommandType。文本,str);   如果(dataReader.Read())//判断当前功能Id下是否有数据   {//读取赋值   试一试   {   showOrder=dataReader.GetInt32 (0);      }   捕获(异常交货)   {      HttpResponseMessage结果=new HttpResponseMessage{内容=new StringContent (ex.Message)};   返回结果;   }      }   dataReader.Close();//关闭

SqlDataReader自带的GetInt32(以及其他的比如GerString等)方法

只是获取数据库中对应数据类型的列,并不具有类型转化的功能,所以不能这样使用

有两种

1。如需要返回int类型的,那么数据库中的字段就定义为int类型,则用GetInt32可行
2。若数据库中定义的不是int类型,又想要返回int类型的,那么就先用数据库中对应的类型得到出来,然后转化
如int.Parse (selectunitidread.GetString (0))
如果不需要返回int类型的,就如你上面写的到的,最后是又转化为了字符串
而数据库中的类型就是与字符串对应的varchar,那么你可以直接给下面的赋值
如:rmoutbackinfo。UnitId=selectunitidread.GetString (0)
而不用再转化为字符串

//解决   showOrder=int.Parse (dataReader.GetString (0));

感谢各位的阅读!关于如何解决SqlDataReader指定转换无效的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

如何解决SqlDataReader指定转换无效的问题