我已将一个sql数据库连接到C#visual studio 2012中的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条件
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注入
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句