【问题标题】:SQL error: "Incorrect syntax near AND"SQL 错误:“AND 附近的语法不正确”
【发布时间】:2011-02-06 10:30:33
【问题描述】:
"[..] security info=False;initial catalog=pooja2011"

Dim cmd As New Data.SqlClient.SqlCommand
Dim con As New Data.SqlClient.SqlConnection(constr)

Try
   Dim strSql As String = "UPDATE a1_ticket SET BANK = '" & Literal20.Text & "' AND PAID = '" & Label1.Text & "'AND BID = '" & Literal21.Text & "' WHERE Ticket_no ='" & Literal3.Text & "'"

   '------------"
   con.Open()
   cmd.Connection = con
   cmd.CommandText = strSql
   cmd.ExecuteNonQuery()
Catch ex As Exception
   Response.Write(ex.Message)
Finally
   cmd.Dispose()
   con.Dispose()
End Try

错误:AND 附近的语法不正确

【问题讨论】:

    标签: asp.net vb.net sql-server-2005


    【解决方案1】:

    您没有使用参数化查询,从而使您的代码容易受到 SQL 注入的攻击。以下是如何改进它:

    Try
        Using conn = New SqlConnection(constr)
        Using cmd = conn.CreateCommand()
            conn.Open()
            Dim sql As String = "UPDATE a1_ticket SET BANK = @bank, PAID = @paid, BID = @bid WHERE Ticket_no = @ticketNo"
            cmd.CommandText = sql
            cmd.Parameters.AddWithValue("@bank", Literal20.Text)
            cmd.Parameters.AddWithValue("@paid", Label1.Text)
            cmd.Parameters.AddWithValue("@bid", Literal21.Text)
            cmd.Parameters.AddWithValue("@ticketNo", Literal3.Text)
            cmd.ExecuteNonQuery()
        End Using
        End Using
    Catch ex As Exception
        Response.Write(ex.Message)
    End Try
    

    【讨论】:

    • 反正我从不喜欢应用程序嵌入式 SQL =)
    • @bitxwise,我认为在应用程序中嵌入 SQL 并没有什么问题。您只需要在正确的层中执行此操作(在这种情况下是非常错误的,因为它位于 Web UI 层中)并且您也应该正确地执行此操作。如果满足这两个条件,我就OK了。
    • @Darin:也许来自架构 POV,当然,但从其他 POV 我仍然会避免它(即维护,DBA 困境,仅举几例呵呵)
    • @user594849,我已经更新了我的答案。使用, 而不是AND 指定要更新的多个字段。
    【解决方案2】:

    嗯,AND 在单引号后没有空格:

    Label1.Text & "'AND BID = '"
    

    应该是:

    Label1.Text & "' AND BID = '"
    

    如果这不能解决您的问题,您可以发布您的错误消息吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多