C#我该如何将基本验证添加到我的应用程序中,以便在输入错误的用户名或密码时显示一个消息框

本文关键字:密码 用户 输入 错误 显示 一个 消息 验证 添加 应用程序 我的 | 更新日期: 2023-09-27 18:22:07

我在C#visual studio 2012中将一个sql数据库连接到了我的windows窗体应用程序,该数据库包含一个表,其中包含用户名、密码和角色三列。

我的表图片

表中有用户名和密码的数据,角色列中还有两种用户类型,根据您的角色是管理员还是客户端,确定登录时将指向的表单。

我的表单中的数据图片

我现在有了登录表单的代码,这样它就可以在登录时检测用户是管理员还是客户,但问题是我没有用户名和密码验证,它会显示一个消息框,详细说明用户何时输入了错误的信息。

有人能修改我的代码吗?如果用户尝试登录失败,它会显示一个消息框,显示用户输入了错误的用户名或密码。

这是我在下面的代码

private void button3_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)'v11.0;AttachDbFilename=|DataDirectory|Data.mdf;Integrated Security=True");
    SqlDataAdapter sda = new SqlDataAdapter("Select Role from Login Where UserName='" + textBox1.Text + "' and Password='" + textBox2.Text + "'   ",con);
    DataTable dt = new System.Data.DataTable();
    sda.Fill(dt);
    if(dt.Rows.Count == 1)
    {
        if (dt.Rows.Count == 1)
        {
            switch (dt.Rows[0]["Role"] as string)
            {
                case "Admin":
                    {
                        this.Hide();
                        AdminMenu ss = new AdminMenu();
                        ss.Show();
                        break;
                    }
                case "Client":
                    {
                        this.Hide();
                        MenuForm mf = new MenuForm();
                        mf.Show();
                        break;
                    }
                default:
                    {
                        // ... handle unexpected roles here...
                        break;
                    }
            }
        }

    }
}
private void Login_Load(object sender, EventArgs e)
{
}
private void Login_FormClosing(object sender, FormClosingEventArgs e)
{
    Application.ExitThread();
}
}
}

C#我该如何将基本验证添加到我的应用程序中,以便在输入错误的用户名或密码时显示一个消息框

在这种情况下,您只需要放置一个其他条件,如

else
{
    MessageBox.Show("Login Details are incorrect.");
}

而且我也不明白为什么你必须这样做,如果条件像

if(dt.Rows.Count == 1)
    {
        if (dt.Rows.Count == 1)
        {

而只有第一个能达到你的目的。

所以代码看起来像这个

private void button3_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)'v11.0;AttachDbFilename=|DataDirectory|Data.mdf;Integrated Security=True");
    SqlDataAdapter sda = new SqlDataAdapter("Select Role from Login Where UserName='" + textBox1.Text + "' and Password='" + textBox2.Text + "'   ",con);
    DataTable dt = new System.Data.DataTable();
    sda.Fill(dt);
    if(dt.Rows.Count == 1)
    {
        switch (dt.Rows[0]["Role"] as string)
        {
            case "Admin":
                {
                    this.Hide();
                    AdminMenu ss = new AdminMenu();
                    ss.Show();
                    break;
                }
            case "Client":
                {
                    this.Hide();
                    MenuForm mf = new MenuForm();
                    mf.Show();
                    break;
                }
            default:
                {
                    MessageBox.Show("Please contact your administrator");
                    break;
                }
        }
    }
    else
    {
        MessageBox.Show("Login Details are incorrect.");
    }
}

现在,如果它既不是客户端也不是管理员,则可以只显示MessageBox。

当然,您的代码需要防止SQL注入