У меня есть активность входа и сброса пароля. Когда я ввожу новый обновленный пароль и снова пытаюсь войти в систему, я не могу сделать это с новым паролем. Работа с старым паролем работает нормально. В принципе, поле пароля не обновляется/перезаписывается.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();
}
}
});
Мне жаль, что я не понимаю, что делает класс PasswordDao. У меня есть класс DataRegister, который имеет все поля GET и SET, инициализированные, а мое имя таблицы - DataRegister.TABLE. Класс адаптера базы данных имеет функции sqlite CRUD. Не могли бы вы объяснить в этих терминах? – Reems9
passwordDao - это класс, который я использую в следующих действиях: 'public PasswordDAO passwordDab;' 'passwordDab = new PasswordDAO (getBaseContext());' и после того, как вы сможете использовать passwordDab.updating (pass) – Vodet