C# 执行web方法时出错

C# 执行web方法时出错,c#,asp.net,sql,database,web-services,C#,Asp.net,Sql,Database,Web Services,我已经创建了asp.net Web服务。我想在验证他之后更新用户的信息,这意味着如果他输入的新用户名不存在,那么只有他才能更新新用户名,否则就不存在 问题是它成功地验证了用户,但当我试图指定不存在的新用户名时,它会给我一个错误,如 Request format is unrecognized for URL unexpectedly ending in '/UpdateUserInfo'. 以下是我的代码: public int UpdateUserInfo(string olduser

我已经创建了asp.net Web服务。我想在验证他之后更新用户的信息,这意味着如果他输入的新用户名不存在,那么只有他才能更新新用户名,否则就不存在

问题是它成功地验证了用户,但当我试图指定不存在的新用户名时,它会给我一个错误,如

 Request format is unrecognized for URL unexpectedly ending in '/UpdateUserInfo'. 
以下是我的代码:

 public int UpdateUserInfo(string oldusername, string newusername, string mailid, string password)
    {
        string validateUser = "Select UserName from tbl_UserInfo where UserName='" + newusername + "' ";
        con = new MySqlConnection(conString);
        con.Open();
        MySqlCommand cmd1 = new MySqlCommand(validateUser, con);
        string User = cmd1.ExecuteScalar().ToString();
        con.Close();
        if (User == newusername)
        {
            return 0;
        }
        else 
        {
            string updateUser = "Update tbl_UserInfo SET UserName='" + newusername + "',Password='" + password + "',Email_ID='" + mailid + "' where UserName='" + oldusername + "' ";
            con = new MySqlConnection(conString);
            con.Open();
            MySqlCommand cmd = new MySqlCommand(updateUser, con);
            int success = cmd.ExecuteNonQuery();
            con.Close();

            if (success > 0)
            {
                return success;
            }
            else
                return 0;
        }
    }
注:我希望结果为

         IF my UserName is A and when i update that UserName with same name 
           i.e A than it should not be updated but when i give another name as B 
             than it should be updated by B i.e now UserName A becomes the B
有什么问题吗

请给出解决方案


谢谢..

哦,请使用参数化查询。啊,处理你的可识别资源。您将省去头痛的事、SQL注入、格式不正确的数据

public int UpdateUserInfo(
    string oldusername, 
    string newusername, 
    string mailid, 
    string password
)
{
    using (var con = new MySqlConnection(conString))
    using (var cmd = con.CreateCommand())
    {
        con.Open();
        cmd.CommandText = "SELECT count(UserName) from tbl_UserInfo where UserName = @newusername";
        cmd.Parameters.AddWithValue("@newusername", newusername);

        var count = (long)cmd.ExecuteScalar();
        if (count < 1)
        {
            return 0;
        }
    }

    using (var con = new MySqlConnection(conString))
    using (var cmd = con.CreateCommand())
    {
        con.Open();
        cmd.CommandText = "UPDATE tbl_UserInfo SET UserName = @newusername, Password = @password, Email_ID = @mailid WHERE UserName = @oldusername";
        cmd.Parameters.AddWithValue("@newusername", newusername);
        cmd.Parameters.AddWithValue("@password", password);
        cmd.Parameters.AddWithValue("@mailid", mailid);
        cmd.Parameters.AddWithValue("@oldusername", oldusername);
        return cmd.ExecuteNonQuery();
    }
}

哦,请使用参数化查询。啊,处理你的可识别资源。您将省去头痛的事、SQL注入、格式不正确的数据

public int UpdateUserInfo(
    string oldusername, 
    string newusername, 
    string mailid, 
    string password
)
{
    using (var con = new MySqlConnection(conString))
    using (var cmd = con.CreateCommand())
    {
        con.Open();
        cmd.CommandText = "SELECT count(UserName) from tbl_UserInfo where UserName = @newusername";
        cmd.Parameters.AddWithValue("@newusername", newusername);

        var count = (long)cmd.ExecuteScalar();
        if (count < 1)
        {
            return 0;
        }
    }

    using (var con = new MySqlConnection(conString))
    using (var cmd = con.CreateCommand())
    {
        con.Open();
        cmd.CommandText = "UPDATE tbl_UserInfo SET UserName = @newusername, Password = @password, Email_ID = @mailid WHERE UserName = @oldusername";
        cmd.Parameters.AddWithValue("@newusername", newusername);
        cmd.Parameters.AddWithValue("@password", password);
        cmd.Parameters.AddWithValue("@mailid", mailid);
        cmd.Parameters.AddWithValue("@oldusername", oldusername);
        return cmd.ExecuteNonQuery();
    }
}

如果您已将web服务中的方法声明为
[WebMethod]
,请尝试此方法。你从哪里调用你的方法?这是一个POST请求还是GET?试试看,您是否已将web服务中的方法声明为
[WebMethod]
。你从哪里调用你的方法?这是POST请求还是GET?使用此代码,用户名区分大小写-可能这也是您的问题?您是否附加了SQL调试器以查看发送到数据库的确切查询?是的,但您可以将调试器附加到SQL server以分析发送的查询。@DarinDimitrov-Thnaks很多。我已经尝试了您的第二个代码,它成功地工作了。:)@达林迪米特罗夫-你能帮我解决另一个问题吗?:)我用这段代码问了一个问题“执行sql查询时出错”——用户名区分大小写——也许这也是你的问题?你是否附加了sql调试器以查看发送到数据库的确切查询?是的,但你可以将调试器附加到sql服务器以分析发送的查询。@DarinDimitrov-Thnak很多。我已经尝试了您的第二个代码,它成功地工作了。:)@达林迪米特罗夫-你能帮我解决另一个问题吗?:)我问了一个问题“执行sql查询时出错”