更新具有特定值的数据库行

时间:2013-02-01 16:49:52

标签: asp.net sql

我需要更新存在特定值的行。 ExecuteNonQuery返回0表示数据库未更新。在调试中单步执行时,会触发更新并包含正确的值,但不会进行任何更新。

string verifySql = @"UPDATE UserInfo SET Verified='@Verified' 
WHERE UserID='@UserID'";

using (var con = newSqlConnection(
ConfigurationManager.ConnectionStrings["UserInfoDB"].ConnectionString))

 using (var cmd = new SqlCommand(verifySql, con))
{
        con.Open();
        cmd.Parameters.AddWithValue("@Verified", "Verified " + DateTime.Now);
        cmd.Parameters.AddWithValue("@UserID", user.UserId);
        Response.Write(cmd.ExecuteNonQuery());
        con.Close();
}

1 个答案:

答案 0 :(得分:5)

丢失sql语句中参数名称周围的单引号。你不需要它们,并且它们使你的代码将你的参数placesholders解释为简单的字符串文字。

然后删除con.Close()行。你也不需要;它由using块覆盖。

最后,您可能还会考虑将已验证的列更改为简单的DateTime类型,而不是尝试将该数据存储为文本。