Asp.net 更新存在特定值的数据库行

Asp.net 更新存在特定值的数据库行,asp.net,sql,Asp.net,Sql,我需要更新存在某个值的行。ExecuteNonQuery返回一个0,表示数据库没有更新。在调试中单步执行时,会命中更新并包含正确的值,但不会执行任何更新 string verifySql = @"UPDATE UserInfo SET Verified='@Verified' WHERE UserID='@UserID'"; using (var con = newSqlConnection( ConfigurationManager.ConnectionStrings["UserInfoD

我需要更新存在某个值的行。
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();
}

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

然后删除con.Close()行。你也不需要这样;它包含在
using
块中


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

在SQL语句中的参数名周围丢失单引号。您不需要它们,它们让您的代码将参数placesholders解释为简单的字符串文字

然后删除con.Close()行。你也不需要这样;它包含在
using
块中

最后,您也可以考虑将已验证的列更改为简单的DeaTimeType,而不是尝试将该数据存储为文本。