УДАЛИТЬ строку — Sql C#

#c# #mysql

#c# #mysql

Вопрос:

Здравствуйте, я хочу удалить строку из своей таблицы, у меня есть 3 таблицы для рецептов, ингредиентов, и я использую 3-ю таблицу для объединения таблиц рецептов и ингредиентов,

мой вопрос Я могу добавить строку, но я не знаю, как удалить строку, я действительно понятия не имею, как это сделать.

пожалуйста, помогите с кодом ^^»

 private void btnAddToRecpie_Click(object sender, EventArgs e)
    {
        string query = "INSERT INTO RecpieIngredient VALUES (@RecpieId,@IngredientId)";

        using (connection = new SqlConnection(connectionString))
        using (SqlCommand cmnd = new SqlCommand(query, connection))
        {
            connection.Open();
            cmnd.Parameters.AddWithValue("@RecpieId", lstRecpie.SelectedValue);
            cmnd.Parameters.AddWithValue("@IngredientId",lstAllIngredient.SelectedValue);
            cmnd.ExecuteScalar();
        }
        PopulateRecpie();
    }

    private void butToDelete_Click(object sender, EventArgs e)
    {
        string query = "DELETE FROM  RecpieIngredient WHERE (@RecpieId , @IngredientId)=@RecpieId , @IngredientId ";

      //  a.Name FROM Ingredient a INNER JOIN RecpieIngredient x ON a.Id = x.IngredientId INNER JOIN Recpie m ON m.Id=x.RecpieId WHERE m.Id="   index;
        using (connection = new SqlConnection(connectionString))
        using (SqlCommand cmnd = new SqlCommand(query, connection))
        {
            connection.Open();

            cmnd.Parameters.AddWithValue("@RecpieId", lstRecpie.SelectedValue);
            cmnd.Parameters.AddWithValue("@IngredientId", lstAllIngredient.SelectedValue);

            cmnd.ExecuteNonQuery();

        }
        PopulateRecpie();
    }
  

Комментарии:

1. Пожалуйста, найдите любой учебник по SQL о том, как написать оператор УДАЛЕНИЯ

2. сначала изучите любой учебник, это сэкономит ваше время, а иногда и жизнь.

Ответ №1:

Это:

 INSERT INTO RecpieIngredient VALUES (@RecpieId,@IngredientId)
  

На самом деле это сокращение для:

 INSERT INTO RecpieIngredient (RecpieId, IngredientId) VALUES (@RecpieId, @IngredientId)
  

DELETE Оператор не имеет такого сокращенного варианта и требует, чтобы вы явно указывали имена столбцов:

 DELETE FROM RecpieIngredient WHERE RecpieId = @RecpieId AND IngredientId = @IngredientId
  

Вы подошли довольно близко к решению проблемы самостоятельно, хотя 🙂

Комментарии:

1. спасибо за информацию, и это работает ^^, но все еще есть некоторые проблемы, которые я попытаюсь исправить ,

Ответ №2:

Вы удаляете неправильное утверждение. Это должно быть

 string query = "DELETE FROM RecpieIngredient 
                         WHERE RecpieId = @RecpieId 
                         AND IngredientId = @IngredientId";