Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 通过visual basic窗体更改access数据库中的密码_Database_Vb.net_Passwords - Fatal编程技术网

Database 通过visual basic窗体更改access数据库中的密码

Database 通过visual basic窗体更改access数据库中的密码,database,vb.net,passwords,Database,Vb.net,Passwords,我目前有一个表单,您可以在其中输入用户名和密码,并在access中创建该表单的记录。从那里,每当它要求输入用户名和密码时,你就输入你的用户名和密码,然后它检查是否正确。我有所有这些工作正常,但现在我有一个单独的形式,你可以改变你的密码,但我不知道我会怎么做。以下是我到目前为止的情况: Dim con As OleDbConnection = New OleDbConnection() Dim cmd As OleDbCommand Dim sql = "SELECT UN, PW FROM Us

我目前有一个表单,您可以在其中输入用户名和密码,并在access中创建该表单的记录。从那里,每当它要求输入用户名和密码时,你就输入你的用户名和密码,然后它检查是否正确。我有所有这些工作正常,但现在我有一个单独的形式,你可以改变你的密码,但我不知道我会怎么做。以下是我到目前为止的情况:

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字符串,但我不确定具体如何使用。提前谢谢

您可以使用此代码

请注意,传递到数据库的值应该通过参数传输,对于初始选择也是如此,不要将字符串连接在一起以形成命令文本。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
他说,请记住,以明文形式存储密码是您安全性的一个大漏洞。任何能够获取访问文件的人都可以读取用户的密码。在数据库中存储密码的最佳方法是通过单向加密方法。杂烩和盐

你可以在这个问题中找到更多信息


这是一种创建SQL的糟糕方法,也是一种存储密码的糟糕方法。我知道这不是很安全,但这个项目只是用于将票据输入数据库的工作。但是非常感谢你的链接!这肯定会对我未来的项目有所帮助!: