当前位置:编程学习 > C#/ASP.NET >>

索引超出了数组界限,求解!

result += "<empclass>" + (sdr.IsDBNull(30) ? "" : sdr.GetString(30)) + "</empclass>";
result += "<turn>" + (sdr.IsDBNull(31) ? "" : sdr.GetString(31)) + "</turn>";  
result += "<empturn>" + (sdr.IsDBNull(32) ? "" : sdr.GetString(32)) + "</empturn>";

 //密度
result += "<oildensity>" + GetOilType((GetOilDesc((sdr.IsDBNull(2) ? "" : sdr.GetString(2)))))+ "</oildensity>";

//升数
result += "<oiltype>" + (GetOilDesc((sdr.IsDBNull(2) ? "" : sdr.GetInt32(2).ToString()))) + "</oiltype>";


代码如上,出现 密度取值 没问题,但是到油品这里就报错,因为密度取值的时候,还引用了下面的升数了,但是为什么到升数这里会报错呢?索引超出了数组界限??  最上面的三行代码 是从索引时0往下面取值的。 --------------------编程问答-------------------- 在线等,顺便吐槽下 清明节 还加班!!! --------------------编程问答-------------------- 木有人啊.... --------------------编程问答-------------------- 断点跟踪 --------------------编程问答--------------------
引用楼主  的回复:
result += "<empclass>" + (sdr.IsDBNull(30) ? "" : sdr.GetString(30)) + "</empclass>";
result += "<turn>" + (sdr.IsDBNull(31) ? "" : sdr.GetString(31)) + "</turn>";  
result += "<empturn>" + (sdr.IsD……

自己调试啊,sdr.GetInt32(2)这个下标是否越界?就一个语句 --------------------编程问答-------------------- 跟踪了。。。取升数就报索引超界 --------------------编程问答-------------------- 跟踪吧。另外建议拼字符串的时候,把那些方法的返回值都先赋值给局部变量吧,花不了几行代码和时间,
起码调试起来好过点。阅读起来也清晰点 --------------------编程问答-------------------- (sdr.IsDBNull(2) ? "" : sdr.GetString(2))

这个代码 在上面都可以取到值 但是我只是在我一个方法里面吧这个当参数传进去就报错了。 --------------------编程问答-------------------- 再次推荐 断点跟踪,添加 监视 --------------------编程问答-------------------- 断点看sdr到底有多少列  --------------------编程问答-------------------- 这个问题是你的数组不够如你设了宽为20个的数组,而你又标SRING[21]就会出现这种错误 --------------------编程问答-------------------- 如果你对数组大小未定义会出现预留的物理空间不够连续存储数组内容从而报出越界的错误。。建议你把数组大小设置一下。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,