У меня есть следующий метод в классе DatabaseHelper

 /**
 * This method is to fetch user id after login or register
 */


public int GetUserID(String tableName,String emailId) {
    SQLiteDatabase db= this.getReadableDatabase();
    String where = COLUMN_USER_EMAIL+" LIKE '%"+emailId+"%'";
    Cursor c = db.query(true, tableName, null,
            where, null, null, null, null, null);
    if(c.getCount()>0)
        return c.getInt(0);
    else
        return 0;
}

Когда я пытаюсь использовать в другой деятельности как

databaseHelper = new DatabaseHelper(getApplicationContext());
            int usr_id = String.valueOf(databaseHelper.GetUserID(databaseHelper.TABLE_USER,textInputEditTextEmail.getText().toString().trim()));

У меня нет доступа к TABLE_USER, потому что это закрыто в классе Datahelper. Что мне не хватает?

0
Angelbreath 15 Май 2018 в 23:09

1 ответ

Лучший ответ

Изменить :-

public int GetUserID(String tableName,String emailId) {
    SQLiteDatabase db= this.getReadableDatabase();
    String where = COLUMN_USER_EMAIL+" LIKE '%"+emailId+"%'";
    Cursor c = db.query(true, tableName, null,
            where, null, null, null, null, null);
    if(c.getCount()>0)
        return c.getInt(0);
    else
        return 0;
}

Быть

public int GetUserID(String emailId) {
    SQLiteDatabase db= this.getReadableDatabase();
    String where = COLUMN_USER_EMAIL+" LIKE '%"+String.valueOf(emailId)+"%'";
    Cursor c = db.query(true, TABLE_USER, null,
            where, null, null, null, null, null);
    if(c.getCount()>0)
        return c.getInt(0);
    else
        return 0;
}

А также изменить

int usr_id = String.valueOf(databaseHelper.GetUserID(databaseHelper.TABLE_USER,textInputEditTextEmail.getText().toString().trim()));

Быть :-

int usr_id = String.valueOf(databaseHelper.GetUserID(textInputEditTextEmail.getText().toString().trim()));

Это решение кодирует имя таблицы в классе DatabaseHelper. Похоже, что нет причин для передачи постоянного значения из того, что вы предоставили.

Поочередно изменить

private static final TABLE_USER = .........

К

public static final TABLE_USER = .........

(где .......... представляет остальную часть кода, который не был предоставлен).

Это решение просто делает переменную TABLE_USER видимой вне класса DatabaseHelper.

0
MikeT 15 Май 2018 в 21:08