mysql set password执行正常,0行受影响但不生效?

pn9klfpd  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有一个c#应用程序,如果你点击一个按钮,它将获取密码文本框中的任何内容,并尝试在usernamelab.text中使用该用户设置mysql数据库。但是,这执行得很好,但是我仍然可以在phpmyadmin中刷新数据库,并且可以使用旧密码正常工作。新密码拒绝访问,因此即使没有错误,它显然也没有更改密码。有人知道为什么会这样吗?
这是按钮的代码。

private void submitNewMySQLPasswordButton_Click(object sender, EventArgs e)
{
    var connection = ConfigurationManager.ConnectionStrings["system"].ConnectionString;
    MySqlConnection myconn = new MySqlConnection(connection);

    myconn.Open();

    MySqlCommand command = myconn.CreateCommand();
    command.CommandText = "UPDATE mysql.user SET Password=PASSWORD('@NewPassHere') WHERE User='@User';";
    command.Parameters.AddWithValue("@User", usernameLabel.Text);
    //command.Parameters.AddWithValue("?hostname", "%");
    command.Parameters.AddWithValue("@NewPassHere", newPasswordTextBox.Text);
    int rows = command.ExecuteNonQuery();

    myconn.Close();
}
zed5wv10

zed5wv101#

您需要删除参数周围的引号,否则它只是一个普通的字符串。

command.CommandText = "UPDATE mysql.user SET Password=PASSWORD(@NewPassHere) WHERE User=@User;";
command.Parameters.Add("@User", SqlDbType.VarChar).Value=usernameLabel.Text;
command.Parameters.Add("@NewPassHere", SqlDbType.VarChar).Value=newPasswordTextBox.Text);
int rows = command.ExecuteNonQuery();

相关问题