繁体   English   中英

在ASP.NET上更新SQL Server错误的注释

[英]Update comment for sql server error at ASP.NET

我在SQL Server中有一个表Seatlist

FlightNo     Origin   1      2     3
---------------------------------------
AK511        PEN      NULL   3     NULL
AK576        KUL      4      7     NULL

以下是我的更新查询:

SqlCommand cmdupdate = new SqlCommand ("update Seatlist 
                                           set 2 = " + SeatNo.Text.ToString() + 
                                       " where ((FlightNo='" + FlightNo.Text.ToString() + "') 
                                           and (Origin='" + Origin.Text.ToString() + "'))", con);

cmdupdate.ExecuteNonQuery();

我也尝试下面的查询:

SqlCommand cmdupdate = new SqlCommand ("update Seatlist 
                                           set 2 = @seat 
                                         where ((FlightNo='" + FlightNo.Text.ToString() + "') 
                                           and (Origin='" + Origin.Text.ToString() + "'))", con);

cmdupdate.Parameters.AddWithValue(@"seat", SeatNo.Text);

但是我收到以下错误:

'2'附近的语法不正确。
说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:'2'附近的语法不正确。

您应该避免使用原始输入值进行字符串连接。 您为SQL注入打开了大门,这是某人可以用来危害您的Web应用程序的最常见方法之一。 您应该只使用参数化查询。

您的查询问题取决于使用2作为列名。 由于2是定界的指示符 ,因此您应使用方括号,如下所示:

string commandText = "UPDATE Seatlist " +
                     "SET [2] = @Seat " +
                     "WHERE FlightNo = @FlightNo AND Origin = @Origin";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(commandText, connection);

    command.Paramters.AddWithValue("@Seat", SeatNo.Text);
    command.Parameters.AddWithValue("@FlightNo", FlightNo.Text);
    command.Parameters.AddWithValue("@Origin", Origin.Text);

    // ... rest of your code
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM