关于System.IndexOutOfRangeException错误,请问如何解决,谢谢!

各位大神好!程序运行出现以下错误提示,请问怎么处理,万谢!

“/”应用程序中的服务器错误。
Teacherid说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IndexOutOfRangeException: Teacherid

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[IndexOutOfRangeException: Teacherid] System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) +6294782
System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) +249
System.Data.SqlClient.SqlDataReader.get_Item(String name) +23
????灲?┫?.敜????痴鸩?(Object , String 働????驜?) +83
EDCOM.WebOffices.Course_Update.??揢??面痵?() +10469
EDCOM.WebOffices.Course_Update.Page_Load(Object sender, EventArgs e) +186
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnLoad(EventArgs e) +132 System.Web.UI.Control.LoadRecursive() +66
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

从这个异常信息来看System.IndexOutOfRangeException: 在位置 0 处没有任何行,这个明显是溢出异常,所以可能情况有以下两点:

Tables.Rows这两个索引肯定有一个错误,要么Tables集合中0处确是没有表,要么Tables集合中0处的表中没有任何行,就我来说或者的错误可能行比较大。

建议此行代码设置断点,鼠标左键选中ds.Tables对象右键"快速监视"在快速监视中看看ds.Tables对象是否存在如果存在里面表中是否存在数据行。

代码常见错误介绍

1、IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。

2、VirtualMachineError :虚拟机错误,当Java虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

3、StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。

4、OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java虚拟机无法分配一个对象,这时抛出该异常。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-09-20
我觉得你好像还有一个问题:传值是否为空的判断。如果没有传递过来id,仍然会执行你下面的查询,因为你定义一个string类型的id,所以在查询时("select * from c_users where id='" + id + "'", con)id还是定义的空值,如果你没定义一个string类型的id,则会报错“未将对象引用设置到对象的实例”。解决方法:最好将下面的语句放到if大括号内,再加上else{response.redirect("../Home.aspx");}这类代码。
第二个就是你没有判断是否查询到结果,就直接输出数据。解决方法楼上都说过了。
示例:
private void Bind()
{
string id = "";
if(Request.QueryString["id"]!=null)
{
id = Request.QueryString["id"].ToString();
SqlConnection con = new SqlConnection("Server=.;database=caiwu;uid=sa;pwd=123");
con.Open();
SqlDataAdapter aaa = new SqlDataAdapter("select * from c_users where id='" + id + "'", con);
DataSet ds = new DataSet();
aaa.Fill(ds);
if(ds.Tables[0[.rows.count > 0)
{
this.User.Text = ds.Tables[0].Rows[0]["users"].ToString();
this.Pwd.Text = ds.Tables[0].Rows[0]["pwd"].ToString();
con.Close();
}
else
{
Response.Write("<script>alert('无查询结果!');</script>");
}
}
else{Response.redirect("../Home.aspx");}
}本回答被网友采纳

关于System.IndexOutOfRangeException错误,请问如何解决,谢谢!
建议此行代码设置断点,鼠标左键选中ds.Tables对象右键"快速监视"在快速监视中看看ds.Tables对象是否存在如果存在里面表中是否存在数据行。代码常见错误介绍 1、IOError:I\/O错误,当发生严重的I\/O错误时,抛出此错误。2、VirtualMachineError :虚拟机错误,当Java虚拟机崩溃或用尽了它继续操作所需的资...

System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并...
System.ArgumentOutOfRangeException: 索引超出范围是设置错误造成的,解决方法为:1、进入到控制面板。2、选择小图标以便更容易找到,找到[索引选项]。3、在点击高级之前最好先点击修改然后把复选框前面的勾全部去掉。4、回到桌面,找到[我的电脑]点击右键,选择[管理],找到[应用和服务]二级选项[服务]再找到...

一个.net的报错,谁能解决?
该 .NET 错误提示显示了一个未经处理的异常,导致了应用程序发生错误。从错误信息中可以看到,异常类型是 System.IndexOutOfRangeException,意味着数组索引超出了数组的边界。换句话说,你尝试访问一个不存在的数组元素。这个问题出现在 TmriToolkitLib.KtCtrlUtil.getKtHardware() 方法中。要解决这个问题,...

C# System.IndexOutOfRangeException:“在位置 0 处没有任何行...
说明sql语句未查找到数据,可以在取值前判断一下,在DataTable tb= DbHelper.query(sql);后加判断:if(tb.Rows.Count>0){ \/\/这里填写你的取值代码 }

用户代码未处理 System.IndexOutOfRangeException Message="在位置 0...
解决这个问题可以分为2步骤,1.你在Dim myadapter2 As SqlClient.SqlDataAdapter 出下断点,看看mysql2的内容是什么,也就是SQL语句,复制下来,放到查询分析器中看看是否会查询出数据。2.设置TextBox24.Text前,需要检查查询结果是否为空 if mydataset2<>nothing and mydataset2.tables("所选储位")....

用户代码未处理 System.IndexOutOfRangeException
你的问题在于取回的DataTable中没有任何的数据,即,没有任何行.你应该调试一下你的sql语句,即使sql是正确的,你也要判断一个datatable中如果rows.count==0,就不要再取其中的行了.

System.IndexOutOfRangeException: 无法找到表 0。
问题应该出在这两句 1 DataSet dat= gl.GetDataSet(mySql_system);2 pds.DataSource = dat.Tables[0].DefaultView;\/\/把数据集中的数据放入分页数据源中 第1句运行后 dat.Tables 为空集合 第2句出现溢出错误 解决方法 :检查 gl.GetDataSet(mySql_system)...

System.IndexOutOfRangeException: 在位置 0 处没有任何行。
这说明你查找的是空数据,没内容,一行记录都没有 this.dataSet_xinwen.Tables[0].Rows[0]这个就报错了 应该先判断下 if(this.dataSet_xinwen.Tables[0].Rows.Count>0){}

System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并...
就会引发System.ArgumentOutOfRangeException异常。像这样的控件有很多,如组合框、列表视图等等。排除这类故障,最简单的方法就是,对赋值变量做一个输出比如MessageBox(xxx.ToString());变量值是否有越界,如果你的程序有日志功能,将变量输出到日志文件,再一个一个人工检查。

异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限...
数组越界了,数组abc长度为26,ds.Tables[0].Rows.Count的数据量大于26,可以将abc变量改为队列List<string>,使用abc.Add(str),就不存在越界问题了。

相似回答