大虾们救命呀,一天都在报错,我快疯掉了

ncpq1982 2005-10-20 04:19:58
第一个报错:在位置 0 处没有任何行。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IndexOutOfRangeException: 在位置 0 处没有任何行。

源错误:


行 41: DataSet ds = new DataSet();
行 42: myCommand.Fill(ds,"news");
行 43: dr = ds.Tables["news"].Rows[0];
行 44: //显示新闻信息
行 45: title.Text=dr["title"].ToString();



第二个报错:索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index

源错误:


行 175: SqlCommand myCommand = new SqlCommand(deleteCmd, myConnection);
行 176: myCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Char, 11));
行 177: myCommand.Parameters["@id"].Value =DataGrid1.DataKeys[(int)(e.Item.ItemIndex)];
行 178:
行 179: myCommand.Connection.Open();

第三个报错:输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 129: btnLast.Enabled=true;
行 130: string arg=e.CommandArgument.ToString();
行 131: PageCount=Int32.Parse(lblPageCount.Text.ToString());
行 132: int pageindex=Int32.Parse(lblCurrentPage.Text.ToString())-1;
行 133: switch(arg)




...全文
142 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpl007 2005-10-20
  • 打赏
  • 举报
回复
多谢楼主的信任,刚刚在忙的东西。

对于第一个问题:在位置 0 处没有任何行。
--------------------------
首先你要确定你的查询语句能查出东西来,你要重点检查你myCommand里CommandText存的查询语句是否有问题(特别是newsid里存的东西,很可能你的数据库里没有关于newsid的数据)。

对于第二个问题:索引超出范围。必须为非负值并小于集合大小。参数名: index
--------------------------
你重点检查 e.Item.ItemIndex 和 DataGrid1.DataKeys.Count ,看前者是否大于后者

对于第二个问题:输入字符串的格式不正确
-----------------------------
可以这样改:

System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^\d+$");

PageCount = (reg.Match(lblPageCount.Text).Success ? Convert.ToInt32(lblPageCount.Text) : 0);

int pageindex = (reg.Match(lblCurrentPage.Text).Success ? Convert.ToInt32(lblCurrentPage.Text) : 0);
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
在别的地方我也用了这个SELECT * FROM news WHERE id='"+newsid+"',没报错,我怀疑可能不是它的问题

谢谢Tray
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
有的
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
(蓝色闪电)你分析的很对呀,可是我还是不知道该怎么改呀:(

我们这里的天很黑了,我要回家了
Tray 2005-10-20
  • 打赏
  • 举报
回复
看看这个SELECT * FROM news WHERE id='"+newsid+"'有数据吗?
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
谢谢(desailly大哥)^_^
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
(蓝色闪电)你回在来吗?

lblPageCount.Text 是空的,我显示不出来,不知道我该怎么改?
tfrtfr 2005-10-20
  • 打赏
  • 举报
回复
你传的id对吗,这个问题你加个断点调试一下就可以了,看看生成的sql对不对就行了。
desailly 2005-10-20
  • 打赏
  • 举报
回复
回家再帮你看
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
*?你的DataTable里没有数据,你取 ds.Tables["news"].Rows[0] 当然报错了?
SqlConnection myConnection = new SqlConnection(strConn);
SqlDataAdapter myCommand = new SqlDataAdapter("SELECT * FROM news WHERE id='"+newsid+"'",myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds,"news");
我明明连了数据库呀,表里也有东东的呀
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
谢谢两位,终于看到希望了呀^_^

ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
跪求大哥们指点一下吧,我真的不知道该怎么办呀
qpl007 2005-10-20
  • 打赏
  • 举报
回复
第一个报错:在位置 0 处没有任何行。
-----------------------------
你的DataTable里没有数据,你取 ds.Tables["news"].Rows[0] 当然报错了

第二个报错:索引超出范围。必须为非负值并小于集合大小。参数名: index
-----------------------------------------------------------
错误在这里:
myCommand.Parameters["@id"].Value =DataGrid1.DataKeys[(int)(e.Item.ItemIndex)];
e.Item.ItemIndex 的数值大于 DataGrid1.DataKeys.Count 了


第三个报错:输入字符串的格式不正确。
----------------------------------------
lblPageCount.Text 或者 lblCurrentPage.Text 里存的不是数字类型,猜想可能为空字符串
henryfan1 2005-10-20
  • 打赏
  • 举报
回复
第一个显然是查找不到记录。
第二个
myCommand.Parameters["@id"].Value =DataGrid1.DataKeys[(int)(e.Item.ItemIndex)];
应该ItemIndex值大于DataKeys.Count;
第三个
PageCount=Int32.Parse(lblPageCount.Text.ToString());
int pageindex=Int32.Parse(lblCurrentPage.Text.ToString())-1;
应该其中有个text不是数字的字符。

这东西楼主调试一下就可以了
ncpq1982 2005-10-20
  • 打赏
  • 举报
回复
大哥们,帮帮我吧,我真的好想哭呀,弄了一天,就是不停的报错.
这个不是我写的,书本的例子不会报错,我照着它来写就有问题:(


111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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