2016-05-08 2 views
-1

У меня есть активность входа и сброса пароля. Когда я ввожу новый обновленный пароль и снова пытаюсь войти в систему, я не могу сделать это с новым паролем. Работа с старым паролем работает нормально. В принципе, поле пароля не обновляется/перезаписывается.UPDATE не работает в sqlite android

В logcat ошибок не обнаружено. Просто, что пароль не обновляется.

Помогите, поскольку я новичок в разработке Android.

Код для обновления (DataRegister класс с GET и SET функций):

public int updatePassword(DataRegister dataregister) { 

    db = dbHelper.getWritableDatabase(); 

    ContentValues updated = new ContentValues(); 
    updated.put("PASSWORD", dataregister.getPASSWORD()); 

return db.update(DataRegister.TABLE, updated, "EMAIL=?" , new String[]{email}); 


} 

Код для поиска:

public String getPass(DataRegister dataRegister) { 

    db = dbHelper.getWritableDatabase(); 

    Cursor cursor = db.query(DataRegister.TABLE, null, "EMAIL=?", 
      new String[]{dataRegister.getEMAIL()}, null, null, null, null); 
    if (cursor != null && cursor.moveToFirst()) 

    { 
     pass = cursor.getString(cursor.getColumnIndex("PASSWORD")); 
     cursor.close(); 
    } 
    return pass; 


    // return contact 


} 

Код для Логин:

String email = editTextUserName.getText().toString(); 
      dataRegister.setEMAIL(email); 

      String password = editTextPassword.getText().toString(); 
      dataRegister.setPASSWORD(password); 

      String storedPassword = loginDataBaseAdapter.getSinlgeEntry(dataRegister); 

      Toast.makeText(Login.this, storedPassword,Toast.LENGTH_LONG).show(); 
      Boolean a=loginDataBaseAdapter.isExist(dataRegister.getEMAIL()); 
      validation = getSharedPreferences("myShaPreferences", Context.MODE_PRIVATE); 

      if (password.equals(storedPassword)) { 

       Toast.makeText(Login.this, 
         "Congrats: Login Successful", Toast.LENGTH_LONG) 
         .show(); 
      } 

      else { 

        Toast.makeText(Login.this, 
          "User Name or Password does not match", 
          Toast.LENGTH_LONG).show(); 


       } 



     } 
    }); 

Код для сброс пароля:

public class ResetPassword extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_reset_password); 

    email = (EditText) findViewById(R.id.em2); 
    dataRegister=new DataRegister(); 

    loginDataBaseAdapter = new DatabaseAdapter(this); 
    loginDataBaseAdapter = loginDataBaseAdapter.open(); 



    pass = (EditText) findViewById(R.id.text12); 
    conpass = (EditText) findViewById(R.id.text13); 

    email1 = email.getText().toString(); 
    dataRegister.setEMAIL(email1); 
    pass1 = pass.getText().toString(); 

    conpass1 = conpass.getText().toString(); 
    dataRegister.setPASSWORD(conpass1); 

    Button btnReset = (Button) findViewById(R.id.btnReset); 
    btnReset.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 


      if (pass1.equals(conpass1)) { 

      loginDataBaseAdapter.updatePassword(email1,pass1); 
       String newpass = loginDataBaseAdapter.getPass(dataRegister); 



       Toast.makeText(ResetPassword.this, newpass, Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(ResetPassword.this, Login.class); 
       startActivity(intent); 


       finish(); 

      } 

      else { 
       Toast.makeText(ResetPassword.this, 
         "Password does not match", 
         Toast.LENGTH_LONG).show(); 

      } 


     } 

    }); 

ответ

0

Может быть, это может помочь вам для обновления данных:

public void updating(Password password) { 
     ContentValues value = new ContentValues(); 

     value.put(PasswordDAO.LOGIN, password.getlogin()); 
     value.put(PasswordDAO.PASSWORD, password.getPassword()); 

     this.mDb.update(PasswordDAO.NAME_TABLE, value, PasswordDAO.ID + " = ?", new String[]{String.valueOf(password.getId())}); 
    } 

PasswordDao это имя класса, который расширяет DAOBase, NAME_TABLE является «Пароль», и вам необходимо создать класс пароль с логином ид и пароль.

надеюсь, что это может вам помочь

+0

Мне жаль, что я не понимаю, что делает класс PasswordDao. У меня есть класс DataRegister, который имеет все поля GET и SET, инициализированные, а мое имя таблицы - DataRegister.TABLE. Класс адаптера базы данных имеет функции sqlite CRUD. Не могли бы вы объяснить в этих терминах? – Reems9

+0

passwordDao - это класс, который я использую в следующих действиях: 'public PasswordDAO passwordDab;' 'passwordDab = new PasswordDAO (getBaseContext());' и после того, как вы сможете использовать passwordDab.updating (pass) – Vodet

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