数据库字段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()强制转换。
以上方法已经验证,不知道还有没有更好的其他办法?有的话请补上。。。