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();
}
}
}
在这种情况下,您只需要放置一个其他条件,如
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注入