簡體   English   中英

通過Visual Basic表單更改Access數據庫中的密碼

[英]Change password in access database through visual basic form

我目前有一個表單,您可以在其中輸入usernamepassword並在訪問時創建它的記錄。 從那里,每當它要求輸入usernamepassword ,你輸入你的usernamepassword ,然后檢查它是否正確。 我所有這些都正常工作,但現在我有一個單獨的表格,你可以改變你的password但我不知道我會怎么做。 這是我到目前為止:

Dim con As OleDbConnection = New OleDbConnection()
Dim cmd As OleDbCommand
Dim sql = "SELECT UN, PW FROM Users WHERE UN='" & cmbUser.Text & "' AND PW='" & txtOldPass.Text & "'"
cmd = New OleDbCommand(sql, con)
con.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=../Database.mdb")
con.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader

Try
   If dr.Read = False Then
      MsgBox("Password is incorrect!")
      txtOldPass.Text = ""
      txtNewPass.Text = ""
      txtNewPassConf.Text = ""
   ElseIf txtNewPass.Text <> txtNewPassConf.Text Then
      MsgBox("Passwords do not match!")
      txtOldPass.Text = ""
      txtNewPass.Text = ""
      txtNewPassConf.Text = ""
   Else
      'This is where the change password code goes
      MsgBox("You password has been changed!")
      cmbUser.SelectedIndex = -1
      txtOldPass.Text = ""
      txtNewPass.Text = ""
      txtNewPassConf.Text = ""
   End If
Catch ex As Exception
   MsgBox(ex.Message)
End Try
con.Close()

正如你所看到的,一切似乎都很好。 只需要代碼來更改PW單元的值。 我想我可以使用sql字符串,但我不確定如何。 提前致謝!

你可以使用這段代碼。

請注意,傳遞給數據庫的值應通過參數(對於您的初始SELECT也是如此)傳輸,而不是將字符串連接在一起形成命令文本。 (SQL注入,解析問題,更清晰的命令文本)

   .....
   Else
      'This is where the change password code goes
      Dim cmdText = "UPDATE Users SET PW = @pwd " & _
                    "WHERE UN = @uname AND PW = @oldpwd"
      dr.Close()
      OleDbCommand cmdUpdate = new OleDbCommand(cmdText, con)
      cmdUpdate.Parameters.AddWithValue("@pwd",txtNewPass.Text) 
      cmdUpdate.Parameters.AddWithValue("@uname",cmbUser.Text) 
      cmdUpdate.Parameters.AddWithValue("@pwd",txtOldPass.Text) 
      cmdUpdate.ExecuteNonQuery()
      MsgBox("You password has been changed!")
      cmbUser.SelectedIndex = -1
      txtOldPass.Text = ""
      txtNewPass.Text = ""
      txtNewPassConf.Text = ""
   End If

說,請記住,以明文形式存儲密碼是您安全​​的一個大漏洞。 任何可以獲取Access文件的人都可以讀取用戶的密碼。 將密碼存儲在數據庫中的最佳方法是通過一種加密方法。 (哈希和鹽)

您可以在此問題中找到更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM