Ошибка SQL: «Неверный синтаксис рядом с AND» - PullRequest
0 голосов
/ 06 февраля 2011
"[..] 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

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Вы не используете параметризованные запросы и, следовательно, делаете свой код уязвимым для 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
0 голосов
/ 06 февраля 2011

Ну, а после одинарной кавычки нет пробела:

Label1.Text & "'AND BID = '"

вероятно должно быть:

Label1.Text & "' AND BID = '"

Если это не решит вашу проблему, вы можете опубликовать сообщение об ошибке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...