System.IndexOutOfRangeException: 索引超出了数组界限

zhen110 2008-08-29 11:41:24
源错误:


行 77: ls_Parms = ls_query.Split('|');
行 78: ls_startdate = ls_Parms[0];
行 79: ls_enddate = ls_Parms[1];
行 80: ls_voiturecode=ls_Parms[2];
行 81: if(ls_voiturecode=="所有")


源文件: e:\park\SpecialQuery\WorkTimeOutInfo.aspx.cs 行: 79


原码:private void BindDataToDataGrid()
{
string ls_query,ls_startdate,ls_enddate,ls_voiturecode,ls_type;
string[] ls_Parms;
string b;
b=DateTime.Now.AddDays(-1).ToShortDateString();
SqlConnection cn =new SqlConnection (Com.Ecode.Park.common.GetDbCnn

());
SqlCommand cmd = new SqlCommand ();
ls_query = this.QueryString.Value;
if (ls_query=="")
{
//ls_query=DateTime.Today.ToShortDateString()

+"~"+DateTime.Today.ToShortDateString();
try
{
cn.Open();
cmd=cn.CreateCommand ();
cmd.CommandType =CommandType.StoredProcedure ;
// Response.Write(b);

//将存储过程付给数据库对象
cmd.CommandText = "UP_PARK_GetOneDayWorkTime";
cmd.Parameters.Add("@Day",b);
cmd.CommandTimeout = 3000 ;
System.Data.DataTable dt = new DataTable();
System.Data.SqlClient.SqlDataAdapter sda = new

System.Data.SqlClient.SqlDataAdapter (cmd);
sda.Fill (dt);
if(dt.Rows.Count>0)
{
ls_query = b+" "+dt.Rows[0]

["begTime"].ToString().Trim()+":00|"+DateTime.Now.ToString()+"|所有";
// this.lblTime.Text=ls_query;
/* Response.Write("<Script language =

javascript>");
Response.Write("alert('aaa!')");
Response.Write("</Script>");
*/
}
cn.Close ();
}
catch(Exception ex)
{
Com.Ecode.Common.LogService.Write(ex.Message );
this.Response.Redirect ("../Publics/error.aspx?

WrongInfo=" +ex.Message);
Response.End();
}

}
// Response.Write(ls_query);

ls_Parms = ls_query.Split('|');
ls_startdate = ls_Parms[0];
ls_enddate = ls_Parms[1];
ls_voiturecode=ls_Parms[2];
if(ls_voiturecode=="所有")
ls_type="0";
else
ls_type="1";

this.lblTime.Text=ls_startdate.Substring(0,(ls_startdate.Length-3))

+"~"+ls_enddate.Substring(0,(ls_enddate.Length-3));

try
{
cn.Open();
cmd=cn.CreateCommand ();
cmd.CommandType =CommandType.StoredProcedure ;

//将存储过程付给数据库对象
cmd.CommandText = "UP_PARK_GetWorkTimeRecordInfo";
cmd.Parameters.Add("@DStartDate",ls_startdate);
cmd.Parameters.Add("@DEndDate",ls_enddate);
cmd.Parameters.Add("@CVoitureCode",ls_voiturecode);
cmd.Parameters.Add("@CType",ls_type);
cmd.CommandTimeout = 3000 ;
System.Data.DataTable dt = new DataTable();
System.Data.SqlClient.SqlDataAdapter sda = new

System.Data.SqlClient.SqlDataAdapter (cmd);
sda.Fill (dt);

DataGrid1.DataSource=dt.DefaultView;
DataGrid1.DataBind();
cn.Close ();
SpanGrid();
}
catch(Exception ex)
{
Com.Ecode.Common.LogService.Write(ex.Message );
this.Response.Redirect ("../Publics/error.aspx?WrongInfo="

+ex.Message);
Response.End();
}
}
...全文
1005 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhen110 2008-08-29
  • 打赏
  • 举报
回复
谢谢啦!帮忙解决一下...
zhen110 2008-08-29
  • 打赏
  • 举报
回复
private void BindDataToDataGrid()
{
string ls_query,ls_startdate,ls_enddate,ls_voiturecode,ls_type;
string[] ls_Parms;
string b;
b=DateTime.Now.AddDays(-1).ToShortDateString();
SqlConnection cn =new SqlConnection (Com.Ecode.Park.common.GetDbCnn());
SqlCommand cmd = new SqlCommand ();
ls_query = this.QueryString.Value;
if (ls_query=="")
{
//ls_query=DateTime.Today.ToShortDateString()+"~"+DateTime.Today.ToShortDateString();
try
{
cn.Open();
cmd=cn.CreateCommand ();
cmd.CommandType =CommandType.StoredProcedure ;
// Response.Write(b);

//将存储过程付给数据库对象
cmd.CommandText = "UP_PARK_GetOneDayWorkTime";
cmd.Parameters.Add("@Day",b);
cmd.CommandTimeout = 3000 ;
System.Data.DataTable dt = new DataTable();
System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter (cmd);
sda.Fill (dt);
if(dt.Rows.Count>0)
{
ls_query = b+" "+dt.Rows[0]["begTime"].ToString().Trim()+":00~"+DateTime.Now.ToString()+"~所有";
// this.lblTime.Text=ls_query;
/* Response.Write("<Script language = javascript>");
Response.Write("alert('aaa!')");
Response.Write("</Script>");
*/
}
cn.Close ();
}
catch(Exception ex)
{
Com.Ecode.Common.LogService.Write(ex.Message );
this.Response.Redirect ("../Publics/error.aspx?WrongInfo=" +ex.Message);
Response.End();
}

}
// Response.Write(ls_query);

ls_Parms = ls_query.Split('~');
ls_startdate = ls_Parms[0];
ls_enddate = ls_Parms[1];
ls_voiturecode=ls_Parms[2];
if(ls_voiturecode=="所有")
ls_type="0";
else
ls_type="1";

this.lblTime.Text=ls_startdate.Substring(0,(ls_startdate.Length-3))+"~"+ls_enddate.Substring(0,(ls_enddate.Length-3));

try
{
cn.Open();
cmd=cn.CreateCommand ();
cmd.CommandType =CommandType.StoredProcedure ;

//将存储过程付给数据库对象
cmd.CommandText = "UP_PARK_GetWorkTimeRecordInfo";
cmd.Parameters.Add("@DStartDate",ls_startdate);
cmd.Parameters.Add("@DEndDate",ls_enddate);
cmd.Parameters.Add("@CVoitureCode",ls_voiturecode);
cmd.Parameters.Add("@CType",ls_type);
cmd.CommandTimeout = 3000 ;
System.Data.DataTable dt = new DataTable();
System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter (cmd);
sda.Fill (dt);

DataGrid1.DataSource=dt.DefaultView;
DataGrid1.DataBind();
cn.Close ();
SpanGrid();
}
catch(Exception ex)
{
Com.Ecode.Common.LogService.Write(ex.Message );
this.Response.Redirect ("../Publics/error.aspx?WrongInfo=" +ex.Message);
Response.End();
}
}
zhen110 2008-08-29
  • 打赏
  • 举报
回复
哦,谢谢啦,我看看
billclinton8 2008-08-29
  • 打赏
  • 举报
回复
ls_Parms = ls_query.Split('¦');
是不是 你的 ls_query 不含有 '¦'
如果 含有 那改成
ls_Parms = ls_query.Split(new char [] {'¦'});

dengchenlu 2008-08-29
  • 打赏
  • 举报
回复
单步调试
看下你分割的数据长度
hz890 2008-08-29
  • 打赏
  • 举报
回复
ls_query是何值?
ls_Parms = ls_query.Split(' ¦');
---------------------------------------------
改为:
ls_Parms = ls_query.Split('¦');
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在C#开发中,“索引超出数组界限”是常遇的错误,通常源于访问数组元素时,所用索引超出数组合法范围。数组索引从0开始,一个包含n个元素的数组,其合法索引范围为0到n-1。若访问索引为n或更大元素,或负数索引,系统会抛出System.IndexOutOfRangeException异常。在“学生管理系统”项目里,该问题可能有以下原因:一是循环条件出错,像for或foreach循环终止条件设置过大,导致遍历数组或集合时越界。二是动态索引计算有误,运行时计算索引时,因逻辑错误使索引超出范围。三是数组未初始化,使用前未分配足够空间,尝试访问时会出错。四是存在null引用,若数组对象本身是null,访问时会抛异常,需确保使用前已正确实例化。五是多线程环境下,不同线程同时修改数组索引,可能使某线程在错误状态下访问数组,触发异常。六是下标硬编码错误,如数组长度9,却误写成10。解决方法有:一是审查代码,重点检查数组访问相关代码,尤其是循环和条件语句。二是借助Visual Studio等IDE调试工具,设断点观察变量值,定位异常行。三是添加异常处理代码,如try-catch块,捕获处理异常,获取详细错误信息。四是记录异常上下文信息,便于定位问题。五是编写单元测试,验证数组操作正确性,确保各种情况下都不越界。初学者要重视这些常见错误,理解并避免它们。在“学生管理系统”中,处理学生数据数组或列表时,要确保索引合法,增加、删除或查找学生信息时逻辑正确。若有代码,针对性分析更易找到问题。

62,244

社区成员

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

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

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

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