2016-05-25 2 views
0

Насколько я исследовал Есть два способа обновления базы данных SQLiteSQLite в Android Как обновить значения

execSQL(String sql) method 

или тому:

update(String table, ContentValues values, String whereClause, String[] whereArgs) method. 

в моем приложении я использую update метод.

В основном я хочу реализовать функциональность забытых паролей. Кроме того, я сделал имя пользователя в качестве основного ключа в базе данных, то есть два пользователя не могут иметь одинаковое имя пользователя. Поэтому, когда пользователь забирает пароль, он вводит правильное имя пользователя, и если он исправляет, он вводит новый пароль, и он должен заменить свой старый пароль в базе данных.

Это метод я определил обновить пароль

public void updateEntry(String userName, String password) { 
    ContentValues updatedValues = new ContentValues(); 
    updatedValues.put("PASSWORD", password); 

    String where = "USERNAME = ?"; 
    db.update("LOGIN", updatedValues, where, new String[] { userName }); 
} 

Это, как я звоню в updateEntry метод

public void onClick(View v) { 
      String userName=forgot_username.getText().toString(); 
      String funame=loginDataBaseAdapter.getUserName(userName); 
      String password=forgot_password.getText().toString(); 
      if (userName.equals(funame)) { 
       if (forgot_password.equals(forgot_confirmpassword)){ 
        loginDataBaseAdapter.updateEntry(userName,password); 
       } 

       Toast.makeText(ForgotPasswordActivity.this,"success",Toast.LENGTH_SHORT).show(); 
      }else { 
       Toast.makeText(ForgotPasswordActivity.this,"User Name is not correct",Toast.LENGTH_SHORT).show(); 

      } 
     } 

я новичок в SQLite и не могу понять эту проблему. Вся помощь приветствуется.

+1

'не может понять проблему'. Я тоже, если вы не объясните **, которая ** является проблемой. –

+0

@ LonnieZamora см. Пароль должен обновляться после того, как я нажму кнопку update, чей 'onClick' я поделился, но он не обновляется, как когда я иду, чтобы проверить файл базы данных, я не вижу никаких изменений. – Omar

+0

@Omar Я уверен, что 'loginDataBaseAdapter.updateEntry (имя пользователя, пароль);' возвращает 'int'. Это 'int' означает, сколько изменений повлияло на количество строк. Просто добавьте его в «Toast», чтобы убедиться, что изменение сделано. Если вы это сделаете, напишите здесь код, чтобы мы могли проверить код правильно. – UDKOX

ответ

0

Попробуйте это:

Добавить этот метод в ваш LoginDataBaseAdapter класса

public boolean updateEntry(String userName, String password) { 
    ContentValues args = new ContentValues(); 
    args.put("PASSWORD", password); 
    return db.update("LOGIN", args, "USERNAME=" + userName, null) > 0; 
} 

Обновить свой метод onClick:

public void onClick(View v) { 
    String userName = forgot_username.getText().toString(); 
    String funame = loginDataBaseAdapter.getUserName(userName); 
    String password = forgot_password.getText().toString(); 
    if (userName.equals(funame)) { 
     if (forgot_password.equals(forgot_confirmpassword)) { 
      if (loginDataBaseAdapter.updateEntry(userName,password)) { 
       Toast.makeText(ForgotPasswordActivity.this, "success", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(ForgotPasswordActivity.this,"failed",Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } else { 
     Toast.makeText(ForgotPasswordActivity.this,"User Name is not correct",Toast.LENGTH_SHORT).show(); 
    } 
} 

Дайте нам знать, который Toast сообщение отображается.

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