【问题标题】:Update sqlite not working on android更新sqlite在android上不起作用
【发布时间】:2016-05-09 12:31:35
【问题描述】:

我有一个登录和重置密码活动。当我输入新的更新密码并尝试再次登录时,我无法使用新密码登录。使用旧密码登录可以正常工作。基本上,密码字段不会被更新/覆盖。

logcat 中没有错误。只是密码没有更新。

请帮忙,因为我是 android 开发的新手。

更新代码(DataRegister 是具有 GET AND 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[]   {dataregister.getEMAIL()});

}

检索代码:

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);

【问题讨论】:

  • 是数据库里面的密码没有更新还是获取不到更新后的密码?
  • 我尝试使用新密码登录,但我无法使用旧密码登录。所以我认为密码不会在数据库中更新。我是否必须调用 onUpgrade 函数(来自数据库助手)才能更新?
  • 我放了一个 Toast 来检查密码检索,但它总是显示一个空白 toast。
  • 不,onUpgrade 仅在您的数据库结构发生变化时才会发生。
  • 所以我们需要查看getSingleEntry()方法......

标签: android database sqlite android-studio android-sqlite


【解决方案1】:

我没有足够的声誉来发表评论,所以我会写下我的建议作为答案......对此感到抱歉

我觉得对你有帮助

在你的 getPass 方法中

if (cursor != null)
cursor.moveToFirst()
    pass = cursor.getString(cursor.getColumnIndex("PASSWORD"));
    cursor.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多