Я хочу обновить свои данные в своей базе данных в VB.net но я получаю синтаксическую ошибку

#database #vb.net #ms-access

#База данных #vb.net #ms-access

Вопрос:

Это моя проблема:

Когда я нажимаю кнопку обновления, я не знаю, как исправить эту ошибку:

Мое сообщение об ошибке:

«Ошибка: синтаксическая ошибка в запросе объединения»

Это мой код:

 Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
    TestConnection()
    Try
        Dim cmd As OleDbCommand
        Dim sql As String
        sql = "(UPDATE tblUsers SET Username = '" amp; txtUserName.Text amp; "', Password = '" amp; txtUserPassword.Text amp;
                "', Usertype = '" amp; cbousertype.Text amp; "', WHERE UserID = '" amp; txtUserID.Text amp; "');"
        cmd = New OleDbCommand(sql, Conn)
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        MsgBox("Error: " amp; ex.Message)
    End Try
End Sub
  

Это неправильно?

Это мое сообщение об ошибке

Это мой код

Комментарии:

1. Хотя я не вижу использования UNION в вашем запросе, у вас есть дополнительная запятая перед WHERE . Удалите это и повторите попытку.

2. я удалил ее, но она по-прежнему выдает ошибку @shahkalpesh

3. Это та же ошибка ( union )? Если нет, повторите ошибку, которую вы видите. Какую кнопку вы нажали? Вы опубликовали код той же кнопки?

4. я получил то же сообщение об ошибке. я нажимаю на свою кнопку Обновления. Да, код, который я опубликовал, — это код при нажатии кнопки обновления @shahkalpesh

5. Установите контрольные точки msgbox("Error во всем вашем коде и запустите код, нажав кнопку Обновить. Я не знаю, откуда исходит ошибка, если не будет достигнута точка останова, которая может быть не из btnUpdate_Click .

Ответ №1:

Теперь моя проблема решена, большое вам спасибо, я изменил свой код, чтобы использовать параметры, и тогда он работает, теперь мой код :

     Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 

    TestConnection()
    Dim cmd As OleDbCommand
    Dim sql As String
    sql = "UPDATE tblUsers SET Username=?, [Password]=?, Usertype=? where UserID=?"
    cmd = New OleDbCommand(sql, Conn)
    cmd.Parameters.AddWithValue("@p1", txtUserName.Text)
    cmd.Parameters.AddWithValue("@p2", txtUserPassword.Text)
    cmd.Parameters.AddWithValue("@p3", cbousertype.Text)
    cmd.Parameters.AddWithValue("@p4", txtUserID.Text)
    cmd.ExecuteNonQuery()
    MsgBox("Data Has Been Updated", MsgBoxStyle.Information, "Updated")
    ShowUser()
End Sub
  

Комментарии:

1. Закройте соединение, когда закончите его использовать. Поместите все одноразовое в блок Using — End Using.

2. Не могли бы вы объяснить мне, почему мне нужно использовать их, пожалуйста, @Lars Tech

3. Конечная часть автоматически удалит объект. Вы оставляете свое соединение открытым, что является плохим управлением.