使用SQL

时间:2018-10-29 13:05:37

标签: c# sql-server asp.net-mvc

我需要通读表中的所有记录,对于每个记录,如果满足特定条件,请在该记录上设置一个值为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";
            }
        }

    }
}

2 个答案:

答案 0 :(得分:5)

问题在于更新查询不会告诉数据库要更新哪一行,因此它会更新整个表。您需要通过包含WHERE子句来告知要更新的行。

答案 1 :(得分:0)

您需要编写如下所示的更新语句

string query = "UPDATE Movies SET Flag = CASE WHEN Code = 11 then true case when Code = 7 then false end";

希望这对您有帮助