2016-03-07 29 views
0

即時編程VB.net上的「更改密碼」窗體。這是OK按鈕的代碼:VB.net和ACCESS中的SQL UPDATE錯誤

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得到這個錯誤。

我有這樣的其他功能,他們運行良好。實際上,我在Access中嘗試了SQL指令「UPDATE Usuario SET Password =」123「WHERE NombreUsuario =」Admin「AND Password = admin」,並且一切正常。

我不知道怎麼了...

對不起我的原始英語!

+0

嘗試增加'cmd.CommandType = CommandType.Text'了'Using'行之後。 – Jaxedin

+0

什麼是對象NombreUsuario和它來自哪裏?問候, –

+0

嘗試cmd.CommandType = CommandType.Text但同樣的錯誤。 NombreUsuario來自程序開始時的登錄表單。是一個公共變量作爲字符串,幷包含用戶名。在調試變量是好的。 – Gonzalo

回答

1

密碼是一個關鍵字,所以你必須把它放在括號:

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

非常感謝!那工作 – Gonzalo