我正在使用 Visual Studio 2010 使用 mysql 数据库进行 Web 服务。
我已经完成了一个检查密码并返回密码(当前密码)的函数,在 web 方法中,我调用该函数来验证更改之前的旧密码是否相等,然后再继续调用 mysql 命令。但即使我仔细检查并直接从数据库复制粘贴用户/密码,Web 方法调用返回无效。谁能看看我哪里出错了?还是我需要提供任何其他信息。谢谢你的协助!
EDIT1:应该是函数do_check_password 的问题。我已经尝试阻止包含 do_check_password 并且能够成功更改的 if 循环。
我的功能代码
private string do_check_password(string username)
{
string connectionString = ConfigurationManager.ConnectionStrings["mysql"].ToString();
MySqlCommand dCmd = new MySqlCommand();
using (MySqlConnection mysqlCon = new MySqlConnection(connectionString))
{
mysqlCon.Open();
dCmd.CommandText = "select password from tbl_login WHERE username = ?username ";
dCmd.CommandType = CommandType.Text;
dCmd.Parameters.Add(new MySqlParameter("?username", username));
dCmd.Connection = mysqlCon;
dCmd.ExecuteNonQuery();
mysqlCon.Close();
MySqlDataAdapter da = new MySqlDataAdapter(dCmd);
DataTable dt = new DataTable();
da.Fill(dt);
string currentPassword = dt.Rows[0].ToString();
return currentPassword;
}
}
[网络方法]
public string editUserPassword(string username, string oldPassword, string newPassword)
{
try
{
string connectionString = ConfigurationManager.ConnectionStrings["mysql"].ToString();
MySqlCommand dCmd = new MySqlCommand();
using (MySqlConnection mysqlCon = new MySqlConnection(connectionString))
{
if(do_check_password(username) == oldPassword)
{
mysqlCon.Open();
dCmd.CommandText = "UPDATE tbl_login SET password=?password WHERE username=?username";
dCmd.CommandType = CommandType.Text;
dCmd.Parameters.Add(new MySqlParameter("?username", username));
dCmd.Parameters.Add(new MySqlParameter("?password", newPassword));
dCmd.Connection = mysqlCon;
dCmd.ExecuteNonQuery();
mysqlCon.Close();
}
else
{
return string.Format( "invalid password");
}
}
return string.Format("password changed");
}
catch (Exception ex)
{
return string.Format(ex.Message);
}
}