在位置 0 处没有任何行。

时间:2021-03-06 10:49:51
  string sql = "select * from 寝室 where 寝室号 = '" + number + "'";

        SqlDataAdapter da = new SqlDataAdapter(sql, conn);
        conn.Open();
        DataSet ds = new DataSet();
        da.Fill(ds);
        int a = 1;
        int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

        if (ds.Tables[0].Rows.Count == 1 && yanz == a)
        {
            Response.Write("该寝室已入住,不能删除");
        }
       
               

10 个解决方案

#1


贴出你的(抛出异常时)调试画面。你总应该自己能够知道哪一行、哪一个集合的下标0没有记录吧?这必须学会自己动手。

#2


在你的窗口,在“变量监视器”窗口输出行数,看看总共是不是0行数据。这些基本的调试自己都学会做了,想到了什么有意义的问题,再在论坛上问真正符合一个技术论坛的程度的问题。

#3


 string sql = "select * from 寝室 where 寝室号 = '" + number + "'";
查询出来的 ds.Tables[0].Rows[0]["入住状态"].ToString()) 是空 或者null  所以转换INT 失败

#4


用户代码未处理 System.IndexOutOfRangeException
  Message=在位置 0 处没有任何行。
  Source=System.Data
  StackTrace:
       在 System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex)
       在 System.Data.DataRowCollection.get_Item(Int32 index)
       在 管理员.Button10_Click(Object sender, EventArgs e) 位置 c:\Users\Administrator\Desktop\大学学生寝室管理系统2\管理员.aspx.cs:行号 509
       在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 

#5


在位置 0 处没有任何行。

#6


 int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString()); 

ds.Tables[0].Rows.Count为0了呗

也就是你这句 sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 没找到记录。

#7


int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

这句改成:
int yanz = 0;

if (ds.Tables[0].Rows.count>0 && ds.Tables[0].Rows[0]["入住状态"].ToString()!="")
    int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

#8


int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

这句改成:
int yanz = 0;

if (ds.Tables[0].Rows.count>0 && ds.Tables[0].Rows[0]["入住状态"].ToString()!="")
    yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

#9


 string sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 
没查到记录

#10


大家都说的是对的, 关键是string sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 这个SQL没有得到记录,所以才会出现后面的错误,可以单步调试一下看看为什么查不到记录?

#1


贴出你的(抛出异常时)调试画面。你总应该自己能够知道哪一行、哪一个集合的下标0没有记录吧?这必须学会自己动手。

#2


在你的窗口,在“变量监视器”窗口输出行数,看看总共是不是0行数据。这些基本的调试自己都学会做了,想到了什么有意义的问题,再在论坛上问真正符合一个技术论坛的程度的问题。

#3


 string sql = "select * from 寝室 where 寝室号 = '" + number + "'";
查询出来的 ds.Tables[0].Rows[0]["入住状态"].ToString()) 是空 或者null  所以转换INT 失败

#4


用户代码未处理 System.IndexOutOfRangeException
  Message=在位置 0 处没有任何行。
  Source=System.Data
  StackTrace:
       在 System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex)
       在 System.Data.DataRowCollection.get_Item(Int32 index)
       在 管理员.Button10_Click(Object sender, EventArgs e) 位置 c:\Users\Administrator\Desktop\大学学生寝室管理系统2\管理员.aspx.cs:行号 509
       在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 

#5


在位置 0 处没有任何行。

#6


 int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString()); 

ds.Tables[0].Rows.Count为0了呗

也就是你这句 sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 没找到记录。

#7


int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

这句改成:
int yanz = 0;

if (ds.Tables[0].Rows.count>0 && ds.Tables[0].Rows[0]["入住状态"].ToString()!="")
    int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

#8


int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

这句改成:
int yanz = 0;

if (ds.Tables[0].Rows.count>0 && ds.Tables[0].Rows[0]["入住状态"].ToString()!="")
    yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());

#9


 string sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 
没查到记录

#10


大家都说的是对的, 关键是string sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 这个SQL没有得到记录,所以才会出现后面的错误,可以单步调试一下看看为什么查不到记录?