Получить конкретную строку SQLite Android - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в Android и хочу, чтобы пользователь входил в систему по электронной почте и паролю. Сообщите пользователю по электронной почте остальную информацию, такую ​​как имя и дату рождения. Есть ли способ сделать это?

«Могу ли я добавить функцию, которая не может принести всю информацию пользователя после входа в систему по электронной почте»

это моя база данных Код:

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;
    }

}

}

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать определенный адрес электронной почты с паролем для запроса в базе данных, чтобы получить все детали.

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();
    }
}
0 голосов
/ 09 ноября 2018

Для вашего первого вопроса, вы можете добавить ниже функцию и использовать ее.

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;

}

Примечание. Обратите внимание на функции setter вашего User объекта, которые могут отличаться от моего примера и типов данных. Используйте c.getInt(), если это int и c.getString(), если String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...