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 失败
查询出来的 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:
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
#6
int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());
ds.Tables[0].Rows.Count为0了呗
也就是你这句 sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 没找到记录。
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 失败
查询出来的 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:
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
#6
int yanz = int.Parse(ds.Tables[0].Rows[0]["入住状态"].ToString());
ds.Tables[0].Rows.Count为0了呗
也就是你这句 sql = "select * from 寝室 where 寝室号 = '" + number + "'"; 没找到记录。
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没有得到记录,所以才会出现后面的错误,可以单步调试一下看看为什么查不到记录?