Encontrar si un valor ingresado existe en una tabla

Estoy tratando de encontrar si el nombre de usuario existe en la base de datos, si existe, entonces una variable booleana se establecerá en verdadero; si no, se establecerá en falso. Parece que la variable siempre se establece en verdadero incluso cuando el nombre de usuario no existe en la tabla. Revisé los datos en la tabla y lo intenté muchas veces, pero la variable siempre se establece en verdadero y siempre se muestra el mensaje "El nombre de usuario existe", sin importar si el nombre de usuario está en la base de datos o no. Este es mi código. ¿Qué estoy haciendo mal?

----Clase de inicio de sesión que define los botones y edita los campos de texto y activa el mensaje cuando se hace clic en el botón de inicio de sesión------------

public class Login extends Activity{
Button sqllogin;
EditText sqlusername, sqlpassword;

 @Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    sqlusername = (EditText) findViewById(R.id.etuname1);
    sqlpassword = (EditText) findViewById(R.id.etpass);


    sqllogin = (Button) findViewById(R.id.bLogin);
    sqllogin.setOnClickListener(new View.OnClickListener() {

            //Method that fires a message when the Login button is clicked

        public void onClick(View v) {
            switch (v.getId()){
            case R.id.bLogin:
            String username = sqlusername.getText().toString();
            String password = sqlpassword.getText().toString();

            DBAdapter entry = new DBAdapter(Login.this); 
            entry.open();
            boolean r = entry.findUsername(username);
            if(r == true){
                Toast.makeText(Login.this, "Username Exists", Toast.LENGTH_LONG).show();
            }
            else{
                Toast.makeText(Login.this, "Username does not Exists", Toast.LENGTH_LONG).show();
            }
            entry.close();
            break;
        }
      }
    });
 }
 }

---------Método en la clase DBAdpater que verifica si el nombre de usuario existe en la tabla------------

public boolean findUsername(String username) {
Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] {
        KEY_USERNAME, KEY_PASSWORD}, KEY_USERNAME + "='"
        + username +"'", null, null, null, null, null);
if (c!= null) {
    return false;
}
else{
    return false;
}
}

preguntado el 12 de junio de 12 a las 19:06

1 Respuestas

En lugar de verificar si el cursor es nulo, intente verificar si el cursor contiene algún dato, por ejemplo:

if(cursor.getCount()!=0)
   return false;
else
   return true;

getCount() devuelve el número de filas devueltas por la consulta.

Respondido el 12 de junio de 12 a las 19:06

or return (cursor.getCount() == 0) por simplicidad - MAV

que estoy seguro de que se optimizará cuando se compile, por lo que si el otro es más fácil de entender para usted, entonces no debería importar: drake clarris

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.