c# - MySQL SET PASSWORD 执行良好,0 行受影响但未生效?
问题描述
我有一个 C# 应用程序,如果您单击一个按钮,它将获取密码文本框的任何内容,并尝试在 usernameLabel.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();
}
解决方案
你需要去掉参数周围的引号,否则它只是一个普通的字符串。
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();
推荐阅读
- php - 需要计算查询mysql的平均经过时间
- php - PHP shell_exec 在终端中工作,但在网页上不显示输出
- python - 在 Python 中用汉字重命名文件
- php - php和mysql更新行不计更新为重复
- node.js - 你能在运行 npm publish 之前检查一个 npm 版本号是否有效吗?
- php - PHP SQL - 搜索与相同球员的比赛
- login - 带有安全性和数据库用户的 Symfony 4 登录表单
- group-by - XSLT group on child node
- javascript - 如何将我的代码从多个 if 语句更改为 Switch Case 语句
- perl - $ssh2-> connect('host') 我怎样才能找到应该是什么主机?