C# 根据角色c向用户指示新表单的登录表单#

C# 根据角色c向用户指示新表单的登录表单#,c#,C#,伙计们 我正在为学校做最后一个项目。任务是创建一个登录表单,该表单将询问用户id、密码,并使用表进行检查,然后根据用户的角色(学生、管理员或教员)将其引导到不同的表单。我在这里尝试了答案,但由于某些原因,我无法让代码正常工作。 我的登录页面显示“就绪”和“正在运行”,什么也不做。我的错在哪里?这是我的密码: public partial class Login : Form { public Login() { InitializeComponent();

伙计们 我正在为学校做最后一个项目。任务是创建一个登录表单,该表单将询问用户id、密码,并使用表进行检查,然后根据用户的角色(学生、管理员或教员)将其引导到不同的表单。我在这里尝试了答案,但由于某些原因,我无法让代码正常工作。 我的登录页面显示“就绪”和“正在运行”,什么也不做。我的错在哪里?这是我的密码:

 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-我不知道什么是断点。我刚开始学习这门课程,和老师在一起也不是很幸运,因为他对我提出的所有问题只有一个答案“去谷歌一下”:(