C# 执行web方法时出错
我已经创建了asp.net 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
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查询时出错”