Mostafa Hajjat
Mostafa Hajjat

Reputation: 33

Get specific row of SQLite android

I am new to Android and I want it when the user logs in by the email and password. Bring the rest of the information like the first name and the date of birth to the user via email. Is there any way to do that?

"Is there a function I can add that can not bring all user information after logging in by email"

this is my database Code :

public class DatabaseHelper extends SQLiteOpenHelper {


private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "UserManager.db";

private static final String TABLE_USER = "user";

private static final String COLUMN_USER_ID = "user_id";
private static final String COLUMN_USER_FIRST_NAME = "user_first_name";
private static final String COLUMN_USER_LAST_NAME = "user_last_name";
private static final String COLUMN_USER_EMAIL = "user_email";
private static final String COLUMN_USER_PHONE_NUMBER = "user_phone_number";
private static final String COLUMN_USER_BARTH_DAY = "user_barth_day";
private static final String COLUMN_USER_PASSWORD = "user_password";
private static final String COLUMN_USER_GENDER = "user_gender";

private String CREATE_USER_TABLE = "CREATE TABLE "+TABLE_USER + "("+
        COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"+
        COLUMN_USER_FIRST_NAME + " TEXT,"+ COLUMN_USER_LAST_NAME + " TEXT,"+
        COLUMN_USER_EMAIL + " TEXT PRIMARY KEY,"+COLUMN_USER_PHONE_NUMBER + " TEXT,"+
        COLUMN_USER_BARTH_DAY+" TEXT,"+ COLUMN_USER_PASSWORD+" TEXT," +
        COLUMN_USER_GENDER+" TEXT"+ ")";

private String DROP_USER_TABLE = "DROP TABLE IF EXISTS "+ TABLE_USER ;

public DatabaseHelper(Context context) {
    super(context , DATABASE_NAME, null , DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_USER_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(DROP_USER_TABLE);
    onCreate(db);
}

public void addUser(User user){
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(COLUMN_USER_FIRST_NAME , user.getFirstName());
    values.put(COLUMN_USER_LAST_NAME , user.getLastName());
    values.put(COLUMN_USER_EMAIL , user.getEmail());
    values.put(COLUMN_USER_PHONE_NUMBER , user.getPhoneNumber());
    values.put(COLUMN_USER_BARTH_DAY , user.getBarthDay());
    values.put(COLUMN_USER_PASSWORD , user.getPassword());
    values.put(COLUMN_USER_GENDER , user.getGender());

    database.insert(TABLE_USER , null, values);
    database.close();
}
public boolean checkUser (String email){
    String [] columns = {
            COLUMN_USER_ID
    };
    SQLiteDatabase database = this.getWritableDatabase();
    String selection = COLUMN_USER_EMAIL + " = ?";
    String[] selectionArgs = {email};

    Cursor cursor = database.query(TABLE_USER,
            columns,selection , selectionArgs,null,null,null);

    int cursorCount = cursor.getCount();
    cursor.close();
    database.close();

    if (cursorCount > 0){
        return true;
    }else {
        return false;
    }

}

public boolean checkUser (String email , String password){
    String [] columns = {
            COLUMN_USER_ID
    };
    SQLiteDatabase database = this.getWritableDatabase();
    String selection = COLUMN_USER_EMAIL + " = ?" + " AND " + COLUMN_USER_PASSWORD + " = ?";
    String[] selectionArgs = {email , password};

    Cursor cursor = database.query(TABLE_USER,
            columns,selection , selectionArgs,null,null,null);

    int cursorCount = cursor.getCount();
    cursor.close();
    database.close();

    if (cursorCount > 0){
        return true;
    }else {
        return false;
    }

}

}

Upvotes: 0

Views: 5110

Answers (2)

porwalshweta24
porwalshweta24

Reputation: 92

You can use particular email address with password to query in database to get all the details.

public String getUserName(String email, String password) {
    Cursor cursor = null;
    String firstName = "";
    try {
        cursor = SQLiteDatabaseInstance_.rawQuery("SELECT * FROM " + TABLE_USER + " WHERE "+ COLUMN_USER_EMAIL +"?", new String[] {email+ ""}+ " AND "+COLUMN_USER_PASSWORD+"?", new String[] {password+ ""});
        if(cursor.getCount() > 0) {
            cursor.moveToFirst();
            firstName= cursor.getString(cursor.getColumnIndex(COLUMN_USER_FIRST_NAME));
        }
        return firstName;
    }finally {
        cursor.close();
    }
}

Upvotes: 1

Zwal Pyae Kyaw
Zwal Pyae Kyaw

Reputation: 140

For your first question, you can add below function and use it.

public User getSingleUserInfo(String email){

    SQLiteDatabase database = this.getWritableDatabase();
    Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_USER + " WHERE " + COLUMN_USER_EMAIL + "=" + email);
    cursor.moveToFirst();

    //setting related user info in User Object
    User user = new User();
    user.setUserId(cursor.getInt(cursor.getColumnIndexCOLUMN_USER_ID ));
    user.setFirstName(cursor.getString(cursor.getColumnIndex(COLUMN_USER_FIRST_NAME));
    user.setLastName(cursor.getString(cursor.getColumnIndex(COLUMN_USER_LAST_NAME ));
    user.setEmail(cursor.getString(cursor.getColumnIndex(COLUMN_USER_EMAIL ));
    user.setPhoneNumber(cursor.getString(cursor.getColumnIndex(COLUMN_USER_PHONE_NUMBER ));
    user.setBirthday(cursor.getString(cursor.getColumnIndex(COLUMN_USER_BARTH_DAY ));
    user.setPassword(cursor.getString(cursor.getColumnIndex(COLUMN_USER_PASSWORD));
    user.setGender(cursor.getString(cursor.getColumnIndex(COLUMN_USER_GENDER ));

    //close cursor & database
    cursor.close();
    database.close();

    return user;

}

Note : Becareful about your User object's setter functions which may be vary from my example and data types. Use c.getInt() if it is int and c.getString() if String.

Upvotes: 2

Related Questions