C#.NET中错误:System.IndexOutOfRangeException: 在位置 0 处没有任何行。

privatevoidBind(){stringid="";if(Request.QueryString["id"]!=null){id=Request.QueryStr... 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);
this.User.Text = ds.Tables[0].Rows[0]["users"].ToString();————此行报错。
this.Pwd.Text = ds.Tables[0].Rows[0]["pwd"].ToString();

con.Close();

新手一枚,谢谢帮助。

}
展开
 我来答
凉悲澄
推荐于2016-04-24 · TA获得超过855个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:142万
展开全部
我觉得你好像还有一个问题:传值是否为空的判断。如果没有传递过来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");}
}
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
0level
2011-11-28 · 超过23用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:71.1万
展开全部
分析这个问题:
先看这行代码:this.User.Text = ds.Tables[0].Rows[0]["users"].ToString();————此行报错。
报的错误是:C#.NET中错误:System.IndexOutOfRangeException: 在位置 0 处没有任何行。
从这个错误可以看出:
1.ds对象不为null,否则报错 是"未将对象设置到引用实例",如果ds对象为null的情况下,ds不可能有.Table[0]这个属性。
2.["users"]这个书写错误或者不存在.这个可以肯定不是这个错误,如果这个错误异常信息应该是 "users 不属于此表"或者"未将对象设置到引用实例"
3.从这个异常信息来看System.IndexOutOfRangeException: 在位置 0 处没有任何行,这个明显是溢出异常.所以可能情况有以下两点:
Tables[0].Rows[0]这两个索引 肯定有一个错误,要么Tables 集合中 0 处确是没有表,要么Tables集合中0处的表中没有任何行. 就我来说 或者的错误 可能行比较大.
建议:此行代码设置断点,鼠标左键选中ds.Tables[0]对象 右键 "快速监视" 在快速监视中 看看 ds.Tables[0]对象是否存在 如果存在里面表中是否存在数据行?确定这一个问题之后估计你自己就名字自己那里错误了。
总结:以上是如何分析问题的方法,不过需要大量的项目经验积累.我只是提供一个分析问题的思路.希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hmloo20101112
2011-11-28 · TA获得超过383个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:245万
展开全部
一般你都要判断一下dataset是否为null,是否包含数据,你可以改一下你的代码
if(ds != null && ds.Tables.Count > 0 && 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();
}
希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zaobanchelong
2011-11-28
知道答主
回答量:27
采纳率:0%
帮助的人:8.1万
展开全部
ds里面没有值,可以加一个判断:
if(ds.Tables[0].Rows.Count<=0)
{
this.User.Text="没有值!";
this.Pwd.Text =“没有值”;
}
else
{
this.User.Text = ds.Tables[0].Rows[0]["users"].ToString();
this.Pwd.Text = ds.Tables[0].Rows[0]["pwd"].ToString();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iambise
2011-11-28 · TA获得超过714个赞
知道小有建树答主
回答量:834
采纳率:50%
帮助的人:504万
展开全部
没有抽取到合适的记录,看看是不是有符合id条件的记录。
建议在this.User.Text = ds.Tables[0].Rows[0]["users"].ToString()赋值前判断一下是否有获取到数据,增加ds.tables[0[.rows.count > 0 类似的判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式