Recuperar Pass - Visual Basic .NET - Portugal-a-Programar
By Whiteangel, October 28, 2013 in Visual Basic .NET
Estou a dessenvolver um projeto, e tenho um form para o utilizador recuperar as sua password, quando o utilizador clica em recuperar password, aparece me um form com uma textbox para o nome, uma para a password nova e outra para confirmar a password e tenho um botão, no código que eu estou a fazer ele está certo, não dá erros, mas ao alterar a password ele não está altera-la na base de dados, podiam ajudar-me a ver o que está de errado no codigo?
Dim cs As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Acer\Documents\Visual Studio 2010\Projects\PAP\BaseDados\SPdados.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
nome = Txtnome.Text
Dim sql As String = "Select * From Login " & "Where Nome= '" & nome & "'"
Dim sqlcom As New SqlCommand(sql, con)
Dim dr As SqlDataReader = sqlcom.ExecuteReader()
nome = dr.Item(0)
info = info & nome & vbCrLf
If info = "" Then
MsgBox(" Utilizador não encontrado. Insira um utilizador válido! ", MsgBoxStyle.Critical, "Mensagem de Erro")
Txtnome.ResetText()
Txtpass.ResetText()
TxtConfPassword.ResetText()
ElseIf Txtpass.Text = TxtConfPassword.Text Then
Dim info1 As String = ""
Username = Txtnome.Text
Dim Sql1 As String = " Update Login " & " set Password ='" & Password & "' where Nome = '" & Username & "'"
Dim sqlcom1 As New SqlCommand(Sql1, con)
nr = sqlcom1.ExecuteNonQuery()
MsgBox(" Erro:" & exc.Message)
MsgBox(" Password recuperada com sucesso!", MsgBoxStyle.Information, "Mensagem de Confirmação")
MsgBox("Password incorrecta", MsgBoxStyle.Critical, "Mensagem de Erro")
Edited October 30, 2013 by Whiteangel
confirmaste na base de dados que a password não está a ficar lá?
Executaste a aplicação linha a linha para ver se está a entrar onde é suposto?
Estás a mostrar a mensagem de password recuperada com sucesso só na parte do catch, ou seja, só mostra em caso de erro. É mesmo isso que pretendes?
Ao clicar no botão diz que a pass foi recuperada, e volto para o form do login, e faço o login com a nova pass e da me incorreto, vou ver à base de dados e ele não esta altera-la na base de dados
Repara bem no código. Essa mensagem que te referes só é mostrada em caso de erro.
Porque é que comentaste a linha ' MsgBox(" Erro:" & exc.Message) ?
Porque é que comentaste a linha ' MsgBox(" Err a o:" & exc.Message) ?
A linha ' MsgBox(" Erro:" & exc.Message) , tanto pode estar em comentário como não, a minha questão é que esse código esta todo a funcionar (sem erros), mas não esta alterar a password na base de dados.
Vou voltar a repetir:
o código que mostra a mensagem de password recuperada com sucesso só é apresentado em caso de erro (está dentro do catch).
Se estás a visualizar esta mensagem então é porque está a dar um erro
Ah sim estava dentro do cath porque eu andei a fazer uns teste, mas eu ao colocar fora do cath , ele diz-me (como mensagem de erro) : que ja existe um dataread associado ao command e que tem de ser fechado, e eu não estou a conseguir resolver esse problema
Posta o erro completo em inglês, mas se já existe alguma coisa, deves ter que fechar alguma anterior conexão antes de fazeres isso... ?
Depois do "End While", fecha o reader (dr.Close())
Mesmo que eu feche "dr.Close()", ele continua a não guardar a pass nova na base de dados
sim deverei ter que fechar, mas não vejo o quê.
Faz debug e mostra o conteúdo da variavel Sql1 antes de executares o query
Muito obrigada pela ajuda, acabei de conseguir resolver o problema
Podias dizer qual era, para uma pessoa que praticamente não viu o teu código para não ficar na ignorância... k