2016-10-31 6 views
-4
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim con As New MySqlConnection("host=localhost; username=root; password=; database=wh_db") 
    Dim cmd As New MySqlCommand 
    Dim dr As MySqlDataReader 

    con.Open() 
    cmd.Connection = con 
    cmd.CommandText = " select pass from user where pass ='" & oldpass.Text & "'" 

    dr = cmd.ExecuteReader 
    If dr.HasRows Then 

     cmd.Connection = con 
     cmd.CommandText = " UPDATE user SET pass ='" & newpass.Text & "' where user = '" & user.Text & "'" 

    Else 
     MsgBox("Password is not correct") 

    End If 
End Sub 
+2

Какая ошибка вы получаете? Вы также должны использовать параметры для предотвращения SQL-инъекций. – topshot

+1

Кто-то может ввести любой доступный пароль из базы данных и сможет изменить свой пароль ... Я бы также предложил вам хэш-пароли. –

+0

Непонятно, голосуя, чтобы закрыть. – halfer

ответ

1

Я не использовал MySQL некоторое время, но посмотрю на это. Это должно дать вам начать в то, что вы после:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim dr As MySqlDataReader 

    Using con As New MySqlConnection(yourConnectionString), 
      cmd As New MySQLCommand("SELECT pass FROM user WHERE pass = @pass", con) 

     cmd.Parameters.Add("@pass", MySqlDbType.VarChar).Value = oldpass.Text 

     con.open() 

     dr = cmd.ExecuteReader 

    End Using 

    If dr.HasRows Then 

     Using con As New MySqlConnection(yourConnectionString), 
       cmd As New MySQLCommand("UPDATE user SET pass = @pass WHERE user = @user", con) 

      cmd.Parameters.Add("@pass", MySqlDbType.VarChar).Value = newpass.Text 
      cmd.Parameters.Add("@user", MySqlDbType.VarChar).Value = user.Text 

      con.open() 

      cmd.ExecuteNonQuery() 

     End Using 

    Else 
     MsgBox("Password is not correct") 
    End If 
End Sub 

Причина вы не обновляется, потому что вы не сказали команду для обновления. Я также внедрил Using, который я предлагаю вам, а также посмотреть параметры, чтобы остановить SQL-инъекцию.

Я отделил оба утверждения от двух операторов Using, поскольку считаю, что это было бы лучше, чем пытаться повторно использовать один и тот же объект для команд SELECT и UPDATE.

+0

не работает сэр, пожалуйста, помогите мне –

+0

Должен дать мне немного больше информации, чем это. Какая ошибка? – Bugs

Смежные вопросы