数据库字段ID是bigint型,在执行某个存储过程后,其中存储过程SQL是这样的:select ID,…………
在程序中声明了变量是int型,在执行存储过程后,以下情况是会抛出异常的:
1、obj.ID = dr.IsDBNull(0) ? 0 : dr.GetInt32(0);
2、obj.ID = (dr["ID"]==null)?0:(int)dr["ID"];
3、obj.ID = (dr["ID"]==null)?0:(Int32)dr["ID"];
解决办法:
把变量声明为Int64
1、obj.ID = dr.IsDBNull(0) ? 0 : dr.GetInt64(0);
2、obj.ID = (dr["ID"]==null)?0:(Int64)dr["ID"];
或用Convert.ToInt32()、int.Parse()强制转换。
以上方法已经验证,不知道还有没有更好的其他办法?有的话请补上。。。
本文探讨了在从数据库读取bigint类型字段到程序中int类型变量时可能遇到的异常情况,并提供了有效的解决方案,建议使用Int64类型的变量来避免溢出错误。
3006

被折叠的 条评论
为什么被折叠?



