2011-02-06 6 views
0
"[..] 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 

ERROR : 근처의 구문이 잘못되었습니다 및SQL 오류 : "잘못된 근처의 구문과"

답변

3

당신은 매개 변수화 쿼리를 사용하여 SQL 주입에 코드가 취약하지 않습니다. 1,

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 
+1

나는 어쨌든 응용 프로그램이 내장 된 SQL을 좋아하지 않았다. =) – bitxwise

+2

+1은 악의적 인 SQL 주입이 악용되기를 기다리고 있음을 나타냅니다. –

+0

@bitxwise, 나는 응용 프로그램에 SQL을 포함 시키는데 아무 문제가 없다고 생각합니다. 적절한 레이어 (이 경우 웹 UI 레이어에 있기 때문에이 경우에는 매우 잘못됨)에서 작업을 수행하면됩니다. 제대로 수행해야합니다. 이 두 가지 조건이 충족되면 나에게 좋습니다. –

0

잘 작은 따옴표 뒤에 공백이없는 : 여기를 개선하는 방법이 '아무튼 경우

Label1.Text & "' AND BID = '" 

:

Label1.Text & "'AND BID = '" 

아마되어야한다 문제를 해결할 때 오류 메시지를 게시 할 수 있습니까?