SQL更新无法正常工作

use*_*312 1 c# sql connection

我遇到了问题.我想更新表,但我正在使用的代码不起作用 - 有人解释原因吗?

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();
}
Run Code Online (Sandbox Code Playgroud)

注意:所有列名都写得正确,ID也正确.

Eva*_*n L 8

首先,你应该换你SqlCommand,并SqlConnectionusing妥善处置.然后永远不要在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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你要么有一个错误的连接字符串(你没有向我们显示语法)或你的查询中有语法错误,应该由我的例子清除.

如果您想进一步解释,您需要定义It doesn't work并提供您所获得的错误.