Как исправить синтаксическую ошибку в выражении UPDATE - PullRequest
0 голосов
/ 24 марта 2019

Я делал базу данных для некоторых платежей, и мой код, похоже, содержит ошибку, и я не вижу, в чем проблема. Я продолжаю получать сообщение об ошибке «Синтаксическая ошибка в операторе UPDATE» в OleDbExecution не обрабатывается. Может кто-нибудь помочь?

Вот мой код:

Dim cnnOLEDB As New OleDbConnection

Dim cmdUpdate As New OleDbCommand

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\UBSOMSPayments.accdb")

If TextBox1.Text <> "" Then
            cmdUpdate.CommandText = "UPDATE Payments SET Position='" & TextBox2.Text & "'," & "PaymentRecipient='" & TextBox3.Text & "'," & "PaymentFor='" & TextBox4.Text & "'," & "Amount='" & TextBox5.Text & "'," & "PayedAmount='" & TextBox6.Text & "'" & " WHERE AssignedOfficer = " & Val(TextBox1.Text)
            '1MsgBox(cmdUpdate.CommandText)
            cmdUpdate.CommandType = CommandType.Text
            cmdUpdate.Connection = conn
            conn.Open()
            cmdUpdate.ExecuteNonQuery() <--- Line where the error shows
            conn.Close()
            MsgBox("Record has been updated.")
        Else
            MsgBox("try again")
        End If
        cmdUpdate.Dispose()

1 Ответ

0 голосов
/ 24 марта 2019

Никогда не следует использовать конкатенацию строк для построения команд SQL, но всегда следует параметризировать запрос, чтобы избежать SQL-инъекций.

Попробуйте это:

Измените запрос на что-нибудькак это:

"UPDATE [Payments] SET [Position] = ?, [PaymentRecipient] = ?, [PaymentFor] = ?, " & _
  "[Amount] = ?, [PayedAmount] = ? & _
  " WHERE [AssignedOfficer] = ?"

, а затем добавить параметры:

cmdUpdate.Parameters.AddWithValue("@p1", TextBox2.Text)
cmdUpdate.Parameters.AddWithValue("@p2", TextBox3.Text)   
cmdUpdate.Parameters.AddWithValue("@p3", TextBox4.Text)   
cmdUpdate.Parameters.AddWithValue("@p4", TextBox5.Text)
cmdUpdate.Parameters.AddWithValue("@p5", TextBox6.Text)
cmdUpdate.Parameters.AddWithValue("@p6", TextBox1.Text)
cmdUpdate.ExecuteNonQuery()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...