我遇到了问题。我想更新表,但我正在使用的代码不起作用 - 有人解释原因吗?
public void ChangeInfo(string Newname, string NewFullname, string NewEmail)
{
SqlConnection con = new SqlConnection("MyconnectionString");
SqlCommand command = new SqlCommand("UPDATE [Users] SET [UserName]='" + Newname + "', [Fullname]='" + NewFullname + "', [Email]='" + NewEmail + "' WHERE [ID]='" + this.ID + "'", con);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
注意:所有列名都写得正确,ID也是正确的。
答案 0 :(得分:8)
首先,您应该将SqlCommand
和SqlConnection
包裹在using
中以妥善处理。然后 NEVER 在SQL中使用字符串连接,因为它会让您对SQL注入攻击开放。
public void ChangeInfo(string Newname, string NewFullname, string NewEmail)
{
using(SqlConnection con = new SqlConnection("MyconnectionString"))
using (
SqlCommand command =
new SqlCommand(
"UPDATE [Users] SET [UserName] = @UserName, [Fullname] = @NewFullName, [Email] = @NewWmail WHERE [ID] = @Id",
con))
{
command.Parameters.AddWithValue("@UserName", Newname);
command.Parameters.AddWithValue("@NewFullName", NewFullname);
command.Parameters.AddWithValue("@NewMail", NewEmail);
command.Parameters.AddWithValue("Id", this.ID);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
}
话虽如此,你要么是一个糟糕的连接字符串(你没有向我们展示语法),要么你的查询中有语法错误,我的例子应该清除它。
如果您需要进一步说明,则需要定义It doesn't work
并提供您所获得的错误。
答案 1 :(得分:-1)
即使我没有明确的想法。有意帮忙。我猜MyconnectionString是你的连接字符串的变量。如果它是带有连接字符串的变量,请删除引号,因为它是一个变量。请回复是否错误。 :)