Обновите определенные строки, используя SQL - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно прочитать все записи в таблице и для каждой записи, если выполняется определенное условие, установить флаг для этой записи со значением true или false. Что происходит, так это то, что мой метод вставляет true для каждой записи.

Как сделать так, чтобы мой метод вставлялся в true или false в зависимости от условия?

Например, если у меня есть значение 11 в столбце Code, тогда вставьте true в столбец Flag для этой записи, но если столбец 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 голосов
/ 29 октября 2018

Вам необходимо написать заявление об обновлении, как показано ниже

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

Надеюсь, это поможет вам

0 голосов
/ 29 октября 2018

Проблема в том, что ваш запрос на обновление не сообщает базе данных, какую строку обновлять, поэтому он обновляет всю таблицу. Вы должны указать, какую строку обновлять, включив предложение WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...