【发布时间】:2021-10-13 06:47:19
【问题描述】:
我正在做一个 C# 项目,直到现在我还没有遇到任何困难,问题是在编写一个简单的登录表单时。
这是它的代码:
MySqlConnection con = new MySqlConnection();
MySqlCommand com = new MySqlCommand();
public LoginForm()
{
InitializeComponent();
con.ConnectionString = @"Data Source=localhost;port=3306;Initial Catalog=databaseName;User id=root;password=''";
}
private void button1_Click(object sender, EventArgs e)
{
con.Open();
com.Connection = con;
com.CommandText = "select * from users";
MySqlDataReader dr = com.ExecuteReader();
if (dr.Read())
{
if (txtBoxUsername.Text.Equals(dr["username"].ToString()) && txtBoxPassword.Text.Equals(dr["password"].ToString()))
{
lblIncorrect.Text = "";
this.Hide();
InjectForm f2 = new InjectForm();
f2.Show();
}
else
{
lblIncorrect.Text = "Incorrect userename or password.";
txtBoxPassword.Text = "";
}
}
con.Close();
}
如您所见,单击按钮将打开我的 MySql 连接并从表用户中选择所有内容。然后检查文本框中输入的用户名和密码是否与存储在 phpMyAdmin 中的用户名和密码匹配。
现在问题来了,如果我使用第一个用户,它会正确登录并执行它应该做的事情,但另一方面,如果我使用第二个用户登录,它会抛出“错误的用户名或密码。”文本。
这一切都应该有效,但它只是没有。
有什么想法吗?
【问题讨论】:
-
您应该在查询中使用 where 子句仅选择与用户名和密码匹配的行,而不是从表中选择所有行。
-
@OlivierRogier 我正在使用 wampserver
-
@Chetan 我试过了,也没用。
-
哦,@OlivierRogier 我正在使用 MySql.Data.dll
-
如果您先尝试使用第二个用户登录会怎样?我想它也不起作用?如果是这样,请检查您的用户权限,允许他们从哪些主机连接到哪个数据库等等。
标签: c# mysql sql select mysqldatareader