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

EFe*_*eit 0 sql asp.net

我需要更新存在特定值的行.该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();
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 5

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

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

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