我需要通读一个表中的所有记录,对于每条记录,如果满足特定条件,则在该记录上设置一个标志,值为 true 或 false。发生的是我的方法为每条记录插入 true。
如何让我的方法根据条件插入 true 或 false?
例如,如果我在 Code
列中的值为 11,则在该记录的 Flag
列中插入一个 true,但是如果 Code
列的值为 7,然后插入一个 false。
查询:
string select = "SELECT * FROM Movies";
读取记录的方法:
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
if (string.IsNullOrEmpty(sdr["Code"].ToString()))
{
C_E = "0";
this.Update(C_E);
//ViewBag.Message = "cero";
}
else
{
C_E = sdr["Code"].ToString();
this.Update(C_E);
// ViewBag.Message = C_E;
}
}
}
更新表的方法:
private string Update(string C_E)
{
ReglaController re = new ReglaController();
string query = "UPDATE Movies SET Flag = @code";
string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
SqlCommand command = new SqlCommand(query, con);
//command.Parameters.Add("@code", SqlDbType.NChar).Value = ("o");
command.Parameters.Add("@code", SqlDbType.NChar).Value = re.Condition(C_E);
con.Open();
command.ExecuteNonQuery();
}
return C_E;
}
条件测试方法:
public string Regla_4(string C_E)
{
string query = "SELECT Emp.Code FROM Empresas WHERE Emp.Code = @codigo";
string R2 = "l";
string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
SqlCommand command = new SqlCommand(query, con);
command.Parameters.Add("@codigo", SqlDbType.Int).Value = C_E;
con.Open();
command.ExecuteNonQuery();
using (SqlDataReader sdr = command.ExecuteReader())
{
if (sdr.HasRows)
{
R2 = "True";
}
else
{
R2 = "False";
}
}
}
}
最佳答案
问题是你的更新查询没有告诉数据库要更新哪一行,所以它更新了整个表。您需要通过包含 WHERE 子句来告诉它要更新哪一行。
关于c# - 使用 SQL 更新特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53046151/