2016-01-09 4 views
1

Так что я пытался обновить свою базу данных с помощью кнопок в VB.Net. Я пробовал использовать другой синтаксис в обновлении таблиц, но он все равно приносит ту же ошибку. Это так расстраивает, потому что мы . заканчивалось время, чтобы закончить нашу систему из-за этого, пожалуйста, помогите мне:. (Неправильный синтаксис Near "("

Так что это мой код, в котором он вызывается после нажатия кнопки Что не так с моим синтаксисом здесь

Public Sub UpdateClient(Client_ID As Integer, _ClientName As String, _Company_Add As String, _Email_Add As String, 
        _Tin_No As String, _Contact_Person As String, _Mobile_No As String, _Telephone_No As String, 
        _Remarks As String, _User As String) 

    Try 
     Dim strInsert As String = "UPDATE CLIENTS SET (ClientID = '" & Client_ID & "', ClientName = '" & _ClientName & "', Company_Add = '" & _Company_Add & "', Email_Add = '" & _Email_Add & "', Tin_No = '" & _Tin_No & "', Contact_Person = '" & _Contact_Person & "', Mobile_No = '" & _Mobile_No & "', Telephone_No = '" & _Telephone_No & "', Remarks = '" & _Remarks & "', User_ = '" & _User & "') WHERE (ClientID = '" & Client_ID & "') " 

     SQLCon.Open() 
     SqlCmd = New SqlCommand(strInsert, SQLCon) 
     SqlCmd.ExecuteNonQuery() 

     SQLCon.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 

    End Try 
End Sub 
?

Тогда вот мой код при событии кнопки:

Public Sub Update_Client() 

    SQL.UpdateClient(ClientIDLabel1.Text, txtCnamee.Text, txtCadd.Text, txtEadd.Text, txtTin.Text, txtCper.Text, txtMno.Text, txtTel.Text, txtRem.Text, User_Label1.Text) 



End Sub 

Я уверен, что ошибка в моей строке sql. Что бы это могло быть? Пожалуйста, пожалуйста, помогите мне:. (

Ps Я новичок, используя VB.Net Пожалуйста, медведь со мной :(Спасибо

+0

После 'SET' нет открытого сигнала. –

+7

Используйте SQL-параметры. Если у вас есть клиент с именем O'Brian или D'Angelo, ваше приложение выйдет из строя. – Plutonix

+0

@Plutonix OMG СПАСИБО СПАСИБО СО МНОЙ: ') –

ответ

3

Вот непосредственная проблема с кодом:. Синтаксис UPDATE как следующим образом:

UPDATE <table> SET <field1>=<value1>, <field2>=<value2> ... 

Обратите внимание, что список переменных, которые вы установили на не заключены в скобках вы должны удалить ( и ) из вашего списка, чтобы скобки решить проблему синтаксиса в вашем SQL:.

Dim strInsert As String = "UPDATE CLIENTS SET ClientID = '" & Client_ID & "', ClientName = '" & _ClientName & "', Company_Add = '" & _Company_Add & "', Email_Add = '" & _Email_Add & "', Tin_No = '" & _Tin_No & "', Contact_Person = '" & _Contact_Person & "', Mobile_No = '" & _Mobile_No & "', Telephone_No = '" & _Telephone_No & "', Remarks = '" & _Remarks & "', User_ = '" & _User & "' WHERE (ClientID = '" & Client_ID & "') " 

Однако есть гораздо более серьезная проблема: ваша программа может быть повреждена атаками SQL-инъекций, что очень опасно. Вам необходимо переписать свой SQL для принятия параметров и использовать параметризованный SQL для устранения этой уязвимости. См. an answer to this question для быстрого примера того, как параметризовать ваш запрос.

+0

Привет @ noob-программист, очень любезно сказать вам спасибо ... Но, пожалуйста, помните о том, что все профессионалы, дающие ответы на SO, жаждут очков репутации. Пожалуйста, прочитайте [это: кто-то-ответы] (http://stackoverflow.com/help/someone-answers). Спасибо! – Shnugo

+0

Ответ на спуск, но предложит показать образец параметризации запроса с их экземпляром, а не просто указывать его. Большой смысл в SQL-инъекции – DRapp

Смежные вопросы