在vb.net中修改用户密码



所以我试图改变我的vb.net项目中用户的密码,我一直在工作。但每次我运行我的代码,我得到我捕获"出错了"。我不知道为什么。我正在使用MYSQL数据库。有人能帮帮我吗?

        Try
        reader = cmd.ExecuteReader()
        Dim found As Boolean = False
        Do While reader.Read()
            If username = DirectCast(reader("username"), String) Then
                If password = DirectCast(reader("password"), String) Then
                    found = True
                Else
                    MessageBox.Show("username and password do not match")
                End If
            End If

            If found = True Then
                Dim cmd2 As New MySqlCommand
                Dim insertStatment As String = "UPDATE login set password = '" + 
               newpassword + "' where username = '" + username + "'" , con)

                cmd2.ExecuteNonQuery()
                MessageBox.Show("password change successfully")
                'End If
            End If
        Loop
    Catch
        MessageBox.Show("Something went wrong")

应该避免使用字符串连接来构建sql语句。这样做会导致错误比如用户名/密码中有单引号或者更糟糕的是如果你有一个聪明的恶意用户在输入文本框中写这样的东西

所以你应该写

Dim insertStatment As String = "UPDATE login set password = @p1 where username = @p2"
Dim cmd2 As New MySqlCommand(insertStatment, con)
cmd2.Parameters.AddWithValue("@p1", password)
cmd2.Parameters.AddWithValue("@p2", username)
cmd2.ExecuteNonQuery()

另一个可能导致错误的原因是MySqlConnection的处理。在你的代码中没有打开的连接,所以我假设它是打开的,但这导致了你的代码的另一个问题:

不捕获异常,然后打印不可用的错误信息。
如果你真的想给出一个消息,尝试打印异常

中给出的错误消息。
Catch e As Exception
    MessageBox.Show("Something went wrong: " & Environment.NewLine & e.Message)

这将给出一个非常清楚的信息,解释问题是什么。

相关内容

  • 没有找到相关文章

最新更新