【问题标题】:Update table where sql in ASP更新 ASP 中的 sql 表
【发布时间】:2016-11-24 14:22:46
【问题描述】:

我需要更新表中的一个字段,其中 id 等于用户选择的值。我有接受和拒绝按钮,当我按下接受时,它会在表格中添加“是”,而当我按下拒绝时会添加“否”。我的查询似乎有问题。 这是我的代码:

protected void AcceptButton_Click(object sender, EventArgs e)
{
        string accepted = "YES";
        SqlCommand cmd = new SqlCommand("UPDATE Journey SET AcceptedJourney = @Accept WHERE JourneyId =  '"+AcceptJourney.SelectedValue+"')");
        cmd.Connection = connection;
        cmd.Parameters.AddWithValue("@Accept", accepted);
        connection.Open();
        cmd.ExecuteNonQuery();
        connection.Close();

        Response.Redirect("~/Account/PassengerDashboard.aspx");
}

我得到的错误是

System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理 附加信息:')' 附近的语法不正确。

【问题讨论】:

  • 您的查询有什么问题?编辑:您的查询末尾有一个)
  • 我收到错误 ')' 附近的语法不正确。
  • 你为什么使用参数Accept而不是JourneyId?它是不一致的,可能会让您对 SQL 注入持开放态度。
  • WHERE JourneyId改成WHERE (JourneyId
  • 我只查找具有 JourneyId 的条目,例如在 AcceptedJourney.selectedvalue 中选择的用户

标签: c# mysql asp.net


【解决方案1】:

不正确:

"UPDATE Journey SET AcceptedJourney = @Accept WHERE JourneyId =  '"+AcceptJourney.SelectedValue+"')"

正确:

"UPDATE Journey SET AcceptedJourney = @Accept WHERE JourneyId =  '"+AcceptJourney.SelectedValue+"';"

不过,我必须同意 ADyson。这将使您容易受到 SQL 注入的攻击。查看Entity Framework 或其他选项。

【讨论】:

    【解决方案2】:

    试试下面

    SqlCommand cmd = new SqlCommand("UPDATE Journey SET AcceptedJourney = @Accept WHERE JourneyId =  '"+AcceptJourney.SelectedValue+"';");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      相关资源
      最近更新 更多