我收到一条错误,说我在删除命令中需要第二个参数,但我相信我已经有两个参与了。我对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语句起作用。
所以我真的不确定删除应该如何工作。任何人都可以帮助确定问题吗?
答案 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字符串中删除参数。