大家好,我需要帮助,因为我有逻辑问题,我不知道我的代码中有什么问题,我创建了类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))