C# 当我使用“删除”按钮时,会收到一条错误消息…如何解决此问题? 受保护的无效按钮1\u单击1(对象发送者,事件参数e) { 字符串year=tb_year.Text; string gross=tb_gross.Text; 字符串评级=DropDownList2.SelectedValue; string director=tb_director.Text;string sel=DropDownList1.SelectedValue; string query=“UPDATE MovieList SET ReleaseYear=@YearValue,”+ Gross=@GrossValue,Rating=@RatingValue+ “Director=@DirectorValue,其中Rank=@SelValue”; System.Data.OleDb.OleDbCommand ocmd= 新System.Data.OleDb.OleDbCommand(查询, 新系统。数据。OleDb。OleDb连接(CSTR); ocmd.Parameters.AddWithValue(“@YearValue”,year); ocmd.Parameters.AddWithValue(“@GrossValue”,gross); ocmd.Parameters.AddWithValue(“@RatingValue”,额定值); ocmd.Parameters.AddWithValue(“@DirectorValue”,director); ocmd.Parameters.AddWithValue(“@SelValue”,sel); ocmd.Connection.Open(); ocmd.ExecuteNonQuery(); ocmd.Connection.Close(); } 受保护的无效按钮2\u单击(对象发送者,事件参数e) { 字符串year=tb_year.Text; string gross=tb_gross.Text; 字符串评级=DropDownList2.SelectedValue; string director=tb_director.Text; 字符串sel=DropDownList1.SelectedValue; string query=“从MovieList中删除,其中Movie=“+DropDownList1.SelectedItem.Text+”; System.Data.OleDb.OleDbCommand ocmd= 新System.Data.OleDb.OleDbCommand(查询, 新系统。数据。OleDb。OleDb连接(CSTR); ocmd.Parameters.AddWithValue(“@YearValue”,year); ocmd.Parameters.AddWithValue(“@GrossValue”,gross); ocmd.Parameters.AddWithValue(“@RatingValue”,额定值); ocmd.Parameters.AddWithValue(“@DirectorValue”,director); ocmd.Parameters.AddWithValue(“@SelValue”,sel); ocmd.Connection.Open(); ocmd.ExecuteNonQuery();

C# 当我使用“删除”按钮时,会收到一条错误消息…如何解决此问题? 受保护的无效按钮1\u单击1(对象发送者,事件参数e) { 字符串year=tb_year.Text; string gross=tb_gross.Text; 字符串评级=DropDownList2.SelectedValue; string director=tb_director.Text;string sel=DropDownList1.SelectedValue; string query=“UPDATE MovieList SET ReleaseYear=@YearValue,”+ Gross=@GrossValue,Rating=@RatingValue+ “Director=@DirectorValue,其中Rank=@SelValue”; System.Data.OleDb.OleDbCommand ocmd= 新System.Data.OleDb.OleDbCommand(查询, 新系统。数据。OleDb。OleDb连接(CSTR); ocmd.Parameters.AddWithValue(“@YearValue”,year); ocmd.Parameters.AddWithValue(“@GrossValue”,gross); ocmd.Parameters.AddWithValue(“@RatingValue”,额定值); ocmd.Parameters.AddWithValue(“@DirectorValue”,director); ocmd.Parameters.AddWithValue(“@SelValue”,sel); ocmd.Connection.Open(); ocmd.ExecuteNonQuery(); ocmd.Connection.Close(); } 受保护的无效按钮2\u单击(对象发送者,事件参数e) { 字符串year=tb_year.Text; string gross=tb_gross.Text; 字符串评级=DropDownList2.SelectedValue; string director=tb_director.Text; 字符串sel=DropDownList1.SelectedValue; string query=“从MovieList中删除,其中Movie=“+DropDownList1.SelectedItem.Text+”; System.Data.OleDb.OleDbCommand ocmd= 新System.Data.OleDb.OleDbCommand(查询, 新系统。数据。OleDb。OleDb连接(CSTR); ocmd.Parameters.AddWithValue(“@YearValue”,year); ocmd.Parameters.AddWithValue(“@GrossValue”,gross); ocmd.Parameters.AddWithValue(“@RatingValue”,额定值); ocmd.Parameters.AddWithValue(“@DirectorValue”,director); ocmd.Parameters.AddWithValue(“@SelValue”,sel); ocmd.Connection.Open(); ocmd.ExecuteNonQuery();,c#,visual-studio,C#,Visual Studio,您应该使用上面的内容更改查询,您缺少了”请使用与更新相同的方法,对where子句使用SQL参数。因此,此代码应该可以工作: string query = "DELETE FROM MovieList WHERE Movie='" + DropDownList1.SelectedItem.Text + "'"; 您的查询字符串中缺少开头的“”。也就是说,您不应该以这种方式构建查询字符串。在我添加“in query”后,它可以删除该项目,但该项目名称仍在网站页面中。当我单击该项目名称时,它将显示其

您应该使用上面的内容更改查询,您缺少了

请使用与更新相同的方法,对where子句使用SQL参数。因此,此代码应该可以工作:

string query = "DELETE FROM MovieList WHERE Movie='" + DropDownList1.SelectedItem.Text + "'";

您的查询字符串中缺少开头的“
。也就是说,您不应该以这种方式构建查询字符串。在我添加“in query”后,它可以删除该项目,但该项目名称仍在网站页面中。当我单击该项目名称时,它将显示其他错误消息……该代码根本不显示您对该项目所做的任何操作更新UI,如果您尝试删除已删除的项目,当然会出错。如果您不确定如何更新下拉列表,您可能需要发布一个新问题,其中包含与该问题相关的代码。不要在打开SQL注入时执行此操作,请使用参数化查询,如
按钮1\u Click1中所述方法。请不要“教”人们如何编写SQL注入可能性为“正确”的代码。正确的方法是像OP使用的其他参数一样使用参数。是的,我们应该使用参数。
string query = "DELETE FROM MovieList WHERE Movie='" + DropDownList1.SelectedItem.Text + "'";
protected void Button2_Click(object sender, EventArgs e)
{
    string sel = DropDownList1.SelectedValue;

    // if your selection is empty, abort early
    if( sel == null || string.IsNullOrEmpty(sel.Text)) return;

    // use a SQL parameter like you did with update
    string query = "DELETE FROM MovieList WHERE Movie=@MovieValue";

    System.Data.OleDb.OleDbCommand ocmd =
         new System.Data.OleDb.OleDbCommand(query,
         new System.Data.OleDb.OleDbConnection(CSTR));

    // here the selected text for the movie is set to the movie parameter
    ocmd.Parameters.AddWithValue("@MovieValue", sel.Text);

    ocmd.Connection.Open();
    ocmd.ExecuteNonQuery();
    ocmd.Connection.Close();
    populateDropDowns();
}