忘记密码asp.net



这是关于忘记密码的问题。面临的错误是索引超出了"If ds.Tables(0).Rows.Count>0 Then"语句的范围

    Dim com As New MySqlCommand
    Dim dr As MySqlDataReader
    conn.Open()
    Dim query As String
    query = "select Password, CustomerName from userdetail where Email = @Email"
    com = New MySqlCommand(query, conn)
    com.Parameters.AddWithValue("@Email", Email.Text)
    dr = com.ExecuteReader

    If dr(0).ToString > 0 Then
        Dim Smtp_Server As New SmtpClient
        Dim e_mail As New MailMessage()
        Smtp_Server.UseDefaultCredentials = False
        Smtp_Server.Credentials = New Net.NetworkCredential("xxx", "xxx")
        Smtp_Server.Port = 587
        Smtp_Server.EnableSsl = True
        Smtp_Server.Host = "smtp.gmail.com"
        e_mail = New MailMessage()
        e_mail.From = New MailAddress("xxx")
        e_mail.To.Add(Email.Text)
        e_mail.Subject = "Your Password Details"
        e_mail.IsBodyHtml = True
        e_mail.Body = "Hi, <br/>Please check your Login Detailss<br/><br/>Your Username: " &
                        Convert.ToString(ds.Tables(0).Rows(0)("CustomerName")) & "<br/><br/>Your Password: " &
                        Convert.ToString(ds.Tables(0).Rows(0)("Password")) & "<br/><br/>"
        Smtp_Server.Send(e_mail)
    Else
        Label7.Text = "The Email you entered not exists"
    End
    conn.Close()

我的数据库设计:用户ID、密码、客户名称、联系人、电子邮件、状态

好的,您已经更改了问题,现在您混淆了MySqlDataReadersDataSet

MySqlDataReader解决方案应该更像

    Using cn As New MySqlConnection("YOURCONNECTIONSTRING")
        cn.Open()
        Using cmd As New MySqlCommand("select Password, CustomerName from userdetail where Email = @Email", conn)
            cmd.Parameters.AddWithValue("@Email", Email.Text)
            Dim dr As MySqlDataReader
            dr = cmd.ExecuteReader
            If dr.Read() Then
                'Did find a record to access the fields use = dr("FieldName").ToString()

            Else
                'didnt find a record
            End If
            dr.Close()
            dr = Nothing
        End Using
    End Using

Using将负责为您处理命令和连接。

然而,我还没有测试过这一点,所以强调"看起来更像",所有这些都表明大卫的评论是完全正确的。在电子邮件中发送密码从来都不是好事。

您需要填充ds,我假设它是Dataset?。。

Dim queryString As String = 
                "select Password, CustomerName from userdetail where Email = @Email"
Dim cmd As SqlCommand = conn.CreateCommand()
Dim da As New SqlDataAdapter()
cmd.Parameters.AddWithValue("@Email", Email.Text)
cmd.CommandText = queryString
da.SelectCommand = cmd
Dim ds As New DataSet()
conn.Open()
da.Fill(ds)

然后您可以检查数据集中的记录。您还需要确保以下内容适用:

  1. Email字段是唯一的
  2. 发送给用户的链接,使他们能够重置密码,而不是发送明文

最新更新