2016-03-07 2 views
0

im программирование формы «Изменить пароль» на VB.net. Это код кнопки OK:Ошибка SQL UPDATE в VB.net и ACCESS

Private Sub BT_CambiaPass_OK_Click(sender As Object, e As EventArgs) Handles BT_CambiaPass_OK.Click 

    Dim strSql As String = "UPDATE Usuario SET Password= ? WHERE NombreUsuario= ? AND Password= ?" 
    Using cmd As New OleDb.OleDbCommand(strSql, conexion) 
     cmd.Parameters.AddWithValue("Password_New", CStr(TB_CambiaPass_NEW.Text)) 
     cmd.Parameters.AddWithValue("NombreUsuario", CStr(NombreUsuario)) 
     cmd.Parameters.AddWithValue("Password_Old", CStr(TB_CambiaPass_Old.Text)) 

     Try 
      conectarse() 
      cmd.ExecuteNonQuery() 
      conexion.Close() 
     Catch ex As Exception 
      MsgBox("Contraseña antigua incorrecta") 
      MsgBox(ex.ToString()) 
     End Try 
    End Using 

End Sub 

ex.tostring возвращение «Синтаксическая ошибка в инструкции UPDATE ...», когда отладить переменные правильны, но где ExecuteNonQuery получаю эту ошибку.

У меня есть другие функции, подобные этому, и они работают нормально. На самом деле я попробовал инструкцию SQL «UPDATE Usuario SET Password =» 123 «WHERE NombreUsuario =« Admin »AND Password = admin» в Access, и все идет хорошо.

Я не знаю, что случилось ...

К сожалению о моем примитивном английском!

+0

Попробуйте добавить 'cmd.CommandType = CommandType.Text' после' Using' линии. – Jaxedin

+0

Что такое объект NombreUsuario и откуда он? С уважением, –

+0

попробовал cmd.CommandType = CommandType.Text, но с той же ошибкой. NombreUsuario получен из формы входа в систему в начале программы. Является общедоступной переменной как строка и содержит имя пользователя. При отладке переменная в порядке. – Gonzalo

ответ

1

Password это ключевое слово, так что вы должны положить его в скобках:

... "UPDATE Usuario SET [Password]= ? WHERE NombreUsuario= ? AND [Password]= ?" 
+0

Спасибо большое! это работает – Gonzalo