在vb.net中更改用户密码

时间:2013-04-27 17:24:52

标签: mysql 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")

1 个答案:

答案 0 :(得分:0)

您应该避免使用字符串连接来构建sql语句。这样做会导致错误的路径,例如当您拥有带有单引号字符的用户名/密码时,或者如果您的输入文本框中有writes something like this的智能和恶意用户,则会导致最差错误

所以你应该写

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)

这将给出一个非常明确的信息,解释问题所在。