使用 sqlite 数据库进行 Java 登录



大家好,我需要帮助,因为我有逻辑问题,我不知道我的代码中有什么问题,我创建了类DB_SQLite并编写了这个函数

public Boolean loginValidation(String email, String password){
     Boolean ResFunct = false;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery("select * from login",null);
    res.moveToFirst();
    while(res.isAfterLast()== false){
        String idDb = res.getString(res.getColumnIndex("ID"));
        String emailDb = res.getString(res.getColumnIndex("email"));
        String passwordDb = res.getString(res.getColumnIndex("password"));
        String nomDb = res.getString(res.getColumnIndex("nom"));
        String prenomDb = res.getString(res.getColumnIndex("prenom"));
        if(email == emailDb && password == passwordDb){
            ResFunct=true;
            break;
        }
        else{
            res.moveToNext();
        }
    }
    return  ResFunct;
}

我创建事件点击按钮加入

View.OnClickListener onjoin = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
         // Toast.makeText(MainActivity.this,"Join ...",Toast.LENGTH_SHORT).show();
            String NomComplet;
            Boolean Valide = false;
            emailString = email.getText().toString();
            passwordString = password.getText().toString();
            Valide = db.loginValidation(emailString, passwordString);
            if (Valide == true){
                NomComplet = db.loginReturnNomComplet(emailString, passwordString);
                Intent intent = new Intent(MainActivity.this, Join.class);
                intent.putExtra("NomComplet",NomComplet);
                startActivity(intent);
            }
            if (Valide == false){
                AlertDialog.Builder a_builder = new AlertDialog.Builder(MainActivity.this);
                a_builder.setMessage("Your information is incorect").setCancelable(false).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.cancel();
                    }
                });
                AlertDialog alert = a_builder.create();
                alert.setIcon(R.drawable.fff);
                alert.setTitle("Error");
                alert.show();
            }
        }
    };
    join.setOnClickListener(onjoin);

但是当我输入有效的电子邮件和密码正确时,该函数也返回 false

要比较两个字符串,您需要使用 .equals() 而不是 == ,否则不会比较它们。所以你需要像这样重写你的条件:

if(email.equals(emailDb) && password.equals(passwordDb))

最新更新