System.IndexOutOfRangeException: Index was outside the bounds of the array.

chenxingyi123 2011-08-17 06:05:45
系统用ibatiS,查询结果会返回到VO里,即resultClass=abcVO,VO可以理解为封装的一个类。(有点废话^_^)
检索条件有三种情况A、B,但抽出的结果大致相同,所以sql语句写在了一起。代码如下:
<![CDATA[ SELECT
MHAH100TB.MENU_HNGT_ID AS MenuID,
MHAH100TB.MENU_KBN AS MenuKind,
]]>
<isNotEqual property="CATEG" compareValue="501">
<isNotEqual property="CATEG" compareValue="601">
<![CDATA[
MHAH100TB_BG.TTL_TXT AS BackgroundTitle,
MHAH100TB_CATEG.MJ_NME AS CategoryFontName
]]>
</isNotEqual>
</isNotEqual>
<isEqual property="CATEG" compareValue="501"> //B查询时传过来的参数"CATEG"值为"501"
<![CDATA[
MHAH100TB.TTL_TXT AS BackgroundTitle
]]>
</isEqual>
<isEqual property="CATEG" compareValue="601">
<![CDATA[
MHAH100TB.TTL_TXT AS CategoryFontName //按理说B查询时不会把这句话作为查询条件
]]>
</isEqual>
<![CDATA[

FROM MHAH100TB
当系统第一次加载时,查询B,结果都可以正确显示。如果先查询A,结果能正确显示,再查询B,此时系统就会报错。
加断点跟踪调试后发现,在执行完B查询后,给VO里面对应的字段赋值时,系统会多给一个字段赋值(也就是CategoryFontName)。最后就会报:Index was outside the bounds of the array.的错误。
因为才接触ibatiS,所以对它的原理还不是很了解。我在怀疑是ibatiS处理上的问题,但又不知道问题到底在哪。
请大家帮忙看一下。
ps:系统log都查看过了,没找出问题的所在。请高手指点迷津。
...全文
1767 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxingyi123 2011-08-17
  • 打赏
  • 举报
回复
是啊,“加断点跟踪调试后发现,在执行完B查询后,给VO里面对应的字段赋值时,系统会多给一个字段赋值(也就是CategoryFontName)。”
就是因为多给CategoryFontName赋值了,才导致越界的啊!!
现在就是不知道怎么导致这种情况发生的。
子夜__ 2011-08-17
  • 打赏
  • 举报
回复
index was outside the bounds of the array.

哥哥 索引越界了哇

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧