#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. Конечная часть автоматически удалит объект. Вы оставляете свое соединение открытым, что является плохим управлением.