Обновление пароля на основе старого пароля.База данных SQLite для Android - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь изменить / обновить пароль на основе старого пароля, сохраненного в базе данных SQLite, но он не работает

Вот класс модели:

public class SyncDownPasswordsTable {

public static final String SYNCDOWN_PASSWORDS_TABLE_NAME = "SyncDownPasswordsTable";
public static final String KEY_USER_ID = "userId";
public static final String KEY_PASSWORD = "password";

private String userId , password;

public SyncDownPasswordsTable(String userId, String password) {
    this.userId = userId;
    this.password = password;
}

public SyncDownPasswordsTable() {
}

public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public static String CreateSyncDownPasswordTable = "CREATE TABLE IF NOT EXISTS " + SYNCDOWN_PASSWORDS_TABLE_NAME + " ( " +
        " " + KEY_USER_ID + " integer primary key AUTOINCREMENT," +
        " " + KEY_PASSWORD + " text" + ")";
}

и метод внутри класса обработчика базы данных.

public int updateSyncDownPassword(SyncDownPasswordsTable synDPTable) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(SyncDownPasswordsTable.KEY_PASSWORD, synDPTable.getPassword());

    // updating row
    return db.update(SyncDownPasswordsTable.SYNCDOWN_PASSWORDS_TABLE_NAME, values, SyncDownPasswordsTable.KEY_USER_ID + " = ?",
            new String[]{String.valueOf(synDPTable.getUserId())});
}

и вызов метода внутри диалога UpdatePassword.

if (v == updateButton) {
        if (!(oldPass.equals(savedPass) && newPass.equals(confirmPass))) {

            toast = Toast.makeText(getContext(), "Passwords didn't match , check Again", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
            oldPassword.setText("");
            newPassword.setText("");
            confirmPassword.setText("");
        } else {

            SyncDownPasswordsTable syncDownPasswordsTable = new SyncDownPasswordsTable();
            syncDownPasswordsTable.setUserId(syncDownPasswordsTable.getUserId());
            syncDownPasswordsTable.setPassword(newPass);
            int update = dbHandler.updateSyncDownPassword(syncDownPasswordsTable);

            if (update > 0) {
                toast = Toast.makeText(getContext(), "Password Updated Successfully .", Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
                dismiss();
            } else {
                toast = Toast.makeText(getContext(), "Error Occured", Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
                dismiss();
            }
        }
    } else {
        dismiss();

1 Ответ

0 голосов
/ 12 декабря 2018

Я полагаю, что вы получаете / передаете идентификатор пользователя "", а не текущий идентификатор пользователя.

То есть

SyncDownPasswordsTable syncDownPasswordsTable = new SyncDownPasswordsTable();

Создает новый объект SyncDownPasswordsTable без значений / свойств.set.

Затем следует

syncDownPasswordsTable.setUserId(syncDownPasswordsTable.getUserId());

, который устанавливает для идентификатора пользователя существующий неустановленный идентификатор пользователя, полученный с помощью syncDownPasswordsTable.getUserId();

Короче говоря, он ничего не делает со значениями.

Так что вам нужно сделать что-то вроде: -

syncDownPasswordsTable.setUserId(a_valid_existing_current_userid);

Где a_valid_existing_current_userid - это идентификатор пользователя, который вы хотите обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...