VS2005中未将对象引用设置到对象的实例的问题
protectedvoidSureBtn_Click(objectsender,System.EventArgse){UserDBuser=newUserDB();Str...
protected void SureBtn_Click(object sender, System.EventArgs e)
{
UserDB user = new UserDB();
String userId = "";
String roleId = "";
SqlDataReader recu = user.GetUserLogin(UserName.Text.Trim(),UserDB.Encrypt(Password.Text.Trim()));
if(recu.Read())
{
userId = recu["UserID"].ToString().Trim();
roleId = recu["RoleID"].ToString().Trim();
}
recu.Close();
if((userId != null)&&(userId != ""))
{
SqlDataReader recur = user.GetSingleUser(Int32.Parse(userId));
if(recur.Read())
{
if(RoleList.SelectedIndex <= 0 && roleId == "1")
{
Session["RoleID"] = roleId;
Session["UserID"] = userId;
Session["UserName"] = UserName.Text;
Response.Redirect("CreateExaminePaper.aspx");
}
if(roleId == "3" && RoleList.SelectedIndex > 0)
{
Session["UserID"] =userId;
Session["UserName"] = UserName.Text.Trim();
Response.Redirect("Admins/UserManage.aspx");
}
if(roleId == "2")
{
Response.Redirect("Admins/QuestionManage.aspx");
}
else
{
Response.Write("<script>alert(\"角色和用户名不相匹配.请你选择正确的角色!!!\")</script>");
}
}
}
else
{
Password.Text = "";
RoleList.SelectedIndex = -1;
Response.Write("<script>alert(\"你的用户名或密码输入有误,请重新输入!\")</script>");
}
}
在执行上述代码时,if(recur.Read())处出现问题,未将对象引用设置到对象的实例,排错提示是使用“new关键字”创建实例对象;在调用方法前通过检查确定对象是否为空。 我是一菜鸟,请把如何修改的步骤写详细点,谢谢! 展开
{
UserDB user = new UserDB();
String userId = "";
String roleId = "";
SqlDataReader recu = user.GetUserLogin(UserName.Text.Trim(),UserDB.Encrypt(Password.Text.Trim()));
if(recu.Read())
{
userId = recu["UserID"].ToString().Trim();
roleId = recu["RoleID"].ToString().Trim();
}
recu.Close();
if((userId != null)&&(userId != ""))
{
SqlDataReader recur = user.GetSingleUser(Int32.Parse(userId));
if(recur.Read())
{
if(RoleList.SelectedIndex <= 0 && roleId == "1")
{
Session["RoleID"] = roleId;
Session["UserID"] = userId;
Session["UserName"] = UserName.Text;
Response.Redirect("CreateExaminePaper.aspx");
}
if(roleId == "3" && RoleList.SelectedIndex > 0)
{
Session["UserID"] =userId;
Session["UserName"] = UserName.Text.Trim();
Response.Redirect("Admins/UserManage.aspx");
}
if(roleId == "2")
{
Response.Redirect("Admins/QuestionManage.aspx");
}
else
{
Response.Write("<script>alert(\"角色和用户名不相匹配.请你选择正确的角色!!!\")</script>");
}
}
}
else
{
Password.Text = "";
RoleList.SelectedIndex = -1;
Response.Write("<script>alert(\"你的用户名或密码输入有误,请重新输入!\")</script>");
}
}
在执行上述代码时,if(recur.Read())处出现问题,未将对象引用设置到对象的实例,排错提示是使用“new关键字”创建实例对象;在调用方法前通过检查确定对象是否为空。 我是一菜鸟,请把如何修改的步骤写详细点,谢谢! 展开
3个回答
展开全部
为什么你的程序里都没有捕捉异常的处理呢?无论是字符串的转换还是去除空格,当字符串为空的时候寄会报你上面所说的错。还有你Int32.Parse(userId)的时候如果字符串不符合数字格式也会出现异常,不过不是空异常而已。还有,SqlDataReader recu = user.GetUserLogin(UserName.Text.Trim(),UserDB.Encrypt(Password.Text.Trim()));这句代码有问题,没有实例化对象你怎么可能调用它的方法呢?!改成用实例化了的类来调用吧~
匆匆一眼,只是看出这点问题而已,希望对你有帮助
匆匆一眼,只是看出这点问题而已,希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UserDB.Encrypt(Password.Text.Trim()));这句话中UserDB改成user,你已经用user代替了,就不要用UserDB了,你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
user.GetSingleUser(Int32.Parse(userId));返回null了,
你看看GetSingleUser返回什么
你看看GetSingleUser返回什么
追问
请问要怎么改呀,能详细点么?
追答
GetSingleUser 的代码发出来看看
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询