SQL删除语句的问题

时间:2016-06-14 22:19:10

标签: c# sql

我收到一条错误,说我在删除命令中需要第二个参数,但我相信我已经有两个参与了。我对SQL和C#很陌生,所以也许我不能正确理解它。

private void RemoveFromRecipeButton_Click(object sender, EventArgs e)
{
    string query = "DELETE FROM RecipeIngredient WHERE Id = @RecipeId & @IngredientId";

    using (connection = new SqlConnection(connectionstring))
    using (SqlCommand command = new SqlCommand(query, connection))
    {
        connection.Open();

        command.Parameters.Remove("@RecipeId", ListRecipes.SelectedValue);
        command.Parameters.Remove("@IngredientId", ListAllIngredients.SelectedValue);

        command.ExecuteScalar();
    }

    PopulateRecipes();
}

我想这可能是因为我将RecipeID和IngredientID与&放在同一行,但是这对我的add语句起作用。

所以我真的不确定删除应该如何工作。任何人都可以帮助确定问题吗?

2 个答案:

答案 0 :(得分:2)

当您想要呼叫Parameters.Remove时,您正在呼叫Parameters.AddWithValue。您正在执行delete语句,但这并不意味着您要删除参数。您仍然需要添加指定要删除的内容的参数。

您的实际SQL语句也是可疑的 - 您当前正在删除两个参数的按位AND与行的Id匹配的行。这就是你想要的吗?

答案 1 :(得分:0)

这里有一些不同的问题。

第一个是我不确定你的sql试图做什么。您是否真的尝试执行按位AND,或者只是想看Id是否等于@RecipeId@IngredientID

此外,仅仅因为您的SQL语句中包含参数,并不意味着您可以使用cmd.Parameters.Remove()删除它们。 Command.Parameters集合用于将程序中的值与sql语句中的特定参数相关联。如果您真的希望从语句中删除它们,则必须从文字sql字符串中删除参数。