我需要更新存在特定值的行。 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();
}
答案 0 :(得分:5)
丢失sql语句中参数名称周围的单引号。你不需要它们,并且它们使你的代码将你的参数placesholders解释为简单的字符串文字。
然后删除con.Close()行。你也不需要;它由using
块覆盖。
最后,您可能还会考虑将已验证的列更改为简单的DateTime类型,而不是尝试将该数据存储为文本。