string str = "select password from registration";
if (str == textBox1.Text)
{
string str1 = "Update registration set password='" + textBox2.Text + "' where password='" + textBox1.Text + "' ";
SqlCommand cmd1 = new SqlCommand(str1, con);
con.Open();
cmd1.ExecuteNonQuery();
con.Close()
MessageBox.Show("password changed");
this.Hide();
}
答案 0 :(得分:0)
最简单的方法是取出旧密码,然后进行必要的检查。如果密码不同,并且新密码符合必要的安全标准,则保存。如果数据库更新成功,则只显示成功方法。
如果您将密码存储为纯文本,则可能需要查看salting和哈希密码。在登录时,您对用户输入进行加盐和散列,并将其与数据库中的散列版本进行比较。
答案 1 :(得分:0)
你在前两行代码中尝试了什么?
string str = "select password from registration";
if (str == textBox1.Text)
在后面的代码中,您似乎期望textBox1中的旧密码。您最好将查询结果存储在str而不是查询本身。
我假设您将密码存储为纯文本,注册表包含用户和密码行。
注册
userid Password
---------------------------
1 abcdef
2 xyzxyz
所以你应该做类似
的事情int userId = 1; // userid of the user for which you want to change password
string str = "SELECT password from registration WHERE userid="+userid;
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader reader = cmd.ExecuteReader();
string oldPassword = string.Empty;
if (reader.HasRows)
{
while (reader.Read())
{
oldPassword = reader["password"].ToString() ;
}
}
//now you can continue with other code with little modification is update query
if (oldPassword == textBox1.Text)
{
string str1 = "Update registration set password='" + textBox2.Text + "' where password='" + textBox1.Text + "' and userid= " + userId;
SqlCommand cmd1 = new SqlCommand(str1, con);
con.Open();
cmd1.ExecuteNonQuery();
con.Close()
MessageBox.Show("password changed");
this.Hide();
}