0

所以我正在尝试更改我正在处理的 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")
4

1 回答 1

0

您应该避免使用字符串连接来构建 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)

这将给出一个非常清楚的信息来解释问题所在。

于 2013-04-27T17:28:34.963 回答