1

Good day, I always used getString() and getInt() in getting results. I'm doing a simple searching and I want to get a boolean result if it is found.

Here's my sample code: ForgotPassword.java

 @Override
public void onClick(View v) {

    String strUserForget = edtForgotPassword.getText().toString().trim();

    switch (v.getId()){
        case R.id.buttonSubmit:

            if (strUserForget.matches("")){
                Toast.makeText(ForgotPasswordActivity.this, "Please Provide Complete Info", Toast.LENGTH_LONG).show();
            }else {
                //String forgetPassProject = "";
                Cursor cursor = (registerDatabase.getSingleRecordForgetPass(strUserForget));
                boolean value = (cursor.getInt(registerDatabase.ID) == 1);

                Toast.makeText(ForgotPasswordActivity.this, "Your password is: " , Toast.LENGTH_LONG).show();
            }
            break;

        case R.id.buttonGoBackWelcome:
            startActivity( new Intent(getApplicationContext(),WelcomeActivity.class));
            finish();
            break;
    }

}

And for registerSQLDatabase.java

public Cursor getSingleRecordForgetPass(String username){

    String querySingleRecord = "SELECT * FROM " + DB_TABLE + "WHERE = " +FULL_NAME+ "LIKE" +username ;
    return  sqLiteDatabase.rawQuery(querySingleRecord,null);
}

The boolean value = (cursor.getInt(registerDatabase.ID) > 0); is incompatible.

RoCk RoCk
  • 3,089
  • 6
  • 31
  • 55

1 Answers1

1

boolean value = (cursor.getInt(registerDatabase.ID) == 1); thows a NPE because it has no results, to avoid this Exception use Objects.equals and check number of results of the Cursor:

if (!Objects.equals(cursor, null) && cursor.getCount() > 0) {
    // has results
} else {
    // has NO results
}

Prior java 1.7:

if (cursor != null && cursor.getCount() > 0) {
    // has results
} else {
    // has NO results
}

As a side problem, as Rohit5k2 pointed there is an unnecessary = in your query:

String querySingleRecord = 
    "SELECT * FROM " + DB_TABLE + " WHERE " + FULL_NAME + " LIKE " + username ;

If you don't need Cursor information, just create a method that returns a boolean:

public boolean existsUser(String username)
{
    String querySingleRecord = "SELECT * FROM " + DB_TABLE + "WHERE " +FULL_NAME+ "LIKE" +username ;
    Cursor cursor = sqLiteDatabase.rawQuery(querySingleRecord,null);

    // now you have the results, DON'T return them, just check if contains
    // > Java 7: if (!Objects.equals(cursor, null) && cursor.getCount() > 0) {
    if (cursor != null && cursor.getCount() > 0) {
        return true;
    }

    return false;
}

And use it in this way:

if (strUserForget.matches("")){
    Toast.makeText(ForgotPasswordActivity.this, "Username cannot be empty.", Toast.LENGTH_LONG).show();
} else if (registerDatabase.existsUser(strUserForget)) {
    Toast.makeText(ForgotPasswordActivity.this, "Your password is: " , Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(ForgotPasswordActivity.this, "User does not exists" , Toast.LENGTH_LONG).show();
}
Community
  • 1
  • 1
Jordi Castilla
  • 25,851
  • 7
  • 65
  • 105
  • My API is 15, what is the equivalent java code for "equals()" ? – RoCk RoCk Mar 09 '16 at 11:38
  • Check my update, just use `cursor != null` – Jordi Castilla Mar 09 '16 at 11:39
  • Thank You, I will try this one. - if(registerDatabase.existsUser(strUserForget) == true){ Toast.makeText(ForgotPasswordActivity.this, "User Exists " , Toast.LENGTH_LONG).show(); } – RoCk RoCk Mar 09 '16 at 11:44
  • `if(registerDatabase.existsUser(strUserForget) == true)` is the same than `if(registerDatabase.existsUser(strUserForget)){` – Jordi Castilla Mar 09 '16 at 11:45
  • I got a nullpointerException. I just would to ask this line of code of mine - String querySingleRecord = "SELECT * FROM " + DB_TABLE + "WHERE = " +FULL_NAME+ "LIKE" +username ; return sqLiteDatabase.rawQuery(querySingleRecord,null); This will return true right if found? – RoCk RoCk Mar 09 '16 at 11:49
  • please, read carefully our answers and ask if you dont understand.... **BUT READ THEM PLEASE** as told several times `where =` is incorrect :( – Jordi Castilla Mar 09 '16 at 11:51
  • I'm so sorry Sir Jordi. – RoCk RoCk Mar 09 '16 at 11:55
  • I'm tracing my errors and apply your code. I truly appreciate your help. :) – RoCk RoCk Mar 09 '16 at 11:58
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/105801/discussion-between-rock-and-jordi-castilla). – RoCk RoCk Mar 09 '16 at 12:10