C# 根据角色c向用户指示新表单的登录表单#
伙计们 我正在为学校做最后一个项目。任务是创建一个登录表单,该表单将询问用户id、密码,并使用表进行检查,然后根据用户的角色(学生、管理员或教员)将其引导到不同的表单。我在这里尝试了答案,但由于某些原因,我无法让代码正常工作。 我的登录页面显示“就绪”和“正在运行”,什么也不做。我的错在哪里?这是我的密码:C# 根据角色c向用户指示新表单的登录表单#,c#,C#,伙计们 我正在为学校做最后一个项目。任务是创建一个登录表单,该表单将询问用户id、密码,并使用表进行检查,然后根据用户的角色(学生、管理员或教员)将其引导到不同的表单。我在这里尝试了答案,但由于某些原因,我无法让代码正常工作。 我的登录页面显示“就绪”和“正在运行”,什么也不做。我的错在哪里?这是我的密码: public partial class Login : Form { public Login() { InitializeComponent();
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
DataTable result = LoginDB.Login(txtUID.Text, txtpwd.Text);
if (result.Rows.Count == 1)
{
string role = result.Rows[0]["UserType"].ToString();
switch(role)
{
case "student":
Students form = new Students();
form.ShowDialog();
this.Hide();
break;
case "admin":
Administrators frm = new Administrators();
frm.ShowDialog();
this.Hide();
break;
case "faculty":
Faculty fom = new Faculty();
fom.ShowDialog();
this.Hide();
break;
}
}
else
{
MessageBox.Show("Invalid UserID or Password", "Invalid Login");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
和LoginDB代码:
public static DataTable Login(string UserID, string Password)
{
try
{
SqlConnection conn = SchoolDB.Connected();
SqlCommand cmd = new SqlCommand("Select UserType from Login where UserID=@id and Password=@pwd", conn);
cmd.Parameters.AddWithValue("@id", UserID);
cmd.Parameters.AddWithValue("@pwd", Password);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
conn.Close();
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
非常感谢您的帮助。您是否尝试在visual studio中放置断点?如果没有,请将其置于开关(角色)行。是否碰巧有多个用户使用该用户名/密码?
role
的值是什么?您应该按照@yogihosting的建议添加断点和调试,并向开关添加默认值,然后debug.print注释或显示消息框,指示存在意外的用户类型。无关,但是如果你正在学习成为一名开发人员,那么你也应该学习一些好的实践。其中之一是,如果不打算对一般异常进行任何处理,则不应捕获它们。因此,要么删除登录中的try-catch块,要么更改throw-ex;投掷@yogihosting-我不知道什么是断点。我刚开始学习这门课程,和老师在一起也不是很幸运,因为他对我提出的所有问题只有一个答案“去谷歌一下”:(