因此,用户输入他们的电子邮件以防忘记密码,输入被输入查询,其中选择电子邮件等于用户输入的电子邮件的地方,但我如何获得第二列中的密码值返回给用户?
我使用的代码是:
Try
If Not dbconn Is Nothing Then dbconn.Close()
dbconn.ConnectionString = String.Format("server={0}; port=3306; user id={1}; password={2}; database={3}; pooling=true", server, userName, password, DatabaseName)
dbconn.Open()
query = String.Format("SELECT * FROM Testers WHERE Email='" + forgotEmail + "'")
Try
dbcomm = New MySqlCommand(query, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
End While
dbread.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Catch ex As Exception
MsgBox(ex.ToString)
End Try
但是在查询点之后该怎么办?
答案 0 :(得分:4)
更新:由于提供的示例是关于密码的,并且应该非常注意密码安全性,我将从一些重要的要点开始这个(接受的)答案,并由其他人评论用户:
切勿使用或发送明文密码。
改为使用哈希值,并在需要时向用户发送临时哈希值。
使用参数化查询来阻止SQL注入。
必读:
现在进行任务:
从第一列搜索值,并从第二列返回值 在VB.NET的同一行
试试这个:
String fieldval;
While dbread.Read()
fieldval = reader.GetString(reader.GetOrdinal("column2"))
'Do something with fieldval
End While
当然,在这种情况下,while循环应该只执行一次(即只应该有一个包含该电子邮件地址的记录)。
你也可以减少这个:
query = String.Format("SELECT * FROM Testers WHERE Email='" + forgotEmail + "'")
到
query = String.Format("SELECT column2 FROM Testers WHERE Email='" + forgotEmail +"'")
其中column2
是该字段的名称。
当然,使用密码时,应始终非常小心。另请查看Plutonix的评论!