所以我试图改变我的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)
这将给出一个非常清楚的信息,解释问题是什么。