所以我正在尝试更改我正在处理的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")
答案 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)
这将给出一个非常明确的信息,解释问题所在。