SQL更新无法正常工作

时间:2014-02-07 15:57:18

标签: 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();
}

注意:所有列名都写得正确,ID也是正确的。

2 个答案:

答案 0 :(得分:8)

首先,您应该将SqlCommandSqlConnection包裹在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是你的连接字符串的变量。如果它是带有连接字符串的变量,请删除引号,因为它是一个变量。请回复是否错误。 :)