Ваша проблема, предполагая, что значение 2-го аргумента метода Displaydata
равно Имя пользователя в том, что вы запрашиваете таблицу TABLE_NAME1 ( profile_data ), которая не имеетстолбец с именем Имя пользователя .
Вместо этого я считаю, что вы хотите запросить таблицу TABLE_NAME ( register_table таблица), поэтому измените: -
Cursor cursor = db.rawQuery("SELECT * FROM "+ TABLE_NAME1 +" WHERE Username = 'admin' ",null);
to: -
Cursor cursor = db.rawQuery("SELECT * FROM "+ TABLE_NAME +" WHERE Username = 'admin' ",null);
Дополнительный комментарий: -
Я больше не получаю сообщение об ошибке, но по-прежнему не отображается корректирующая информация.Я получаю «Не установлено» из моего метода displayData.from my if ELSE
Если вы добавили данные и получили вышеприведенное, то, вероятно, имя пользователя не соответствует строке в таблице.Попробуйте использовать следующую версию DisplayData
для отладки: -
// Note changed to use recommended convenience query method
// Note closes cursor thus uses intermediate variable (rv) to allow close
public String DisplayData(String username,String column)
{
String rv = "Not set";
SQLiteDatabase db = this.getReadableDatabase();
//Cursor cursor = db.rawQuery("SELECT * FROM "+ TABLE_NAME +" WHERE Username =?",new String[]{username}); //<<<<< replaced
String whereclause = COL_2 + "=?";
String[] whereargs = new String[]{username};
Cursor cursor = db.query(TABLE_NAME,null,whereclause,whereargs,null,null,null);
//<<<<<<<<<< FOLLOWING CODE ADDED TO LOG DEBUG INFO >>>>>>>>>>
Log.d("DISPLAYDATAINFO","Display was called with Username as:- " +
username +
" for Column:- " +
column +
". The Cursor contains " +
String.valueOf(cursor.getCount()) +
" ."
);
//<<<<<<<<<< END OF ADDED DEBUG CODE >>>>>>>>>>
if(cursor.moveToFirst()){
rv = cursor.getString(cursor.getColumnIndexOrThrow(column));
}
cursor.close(); //<<<< SHOULD ALWAYS CLOSE CURSOR WHEN DONE WITH IT
return rv;
}
Это должно привести к выводу в журнал по следующим строкам: -
05-18 23:08:25.429 2926-2926/fitness.fitness D/DISPLAYDATAINFO: Display was called with Username as:- Fred for Column:- Weight. The Cursor contains 5 .
Display was called with Username as:- Fred for Column:- Height. The Cursor contains 5 .
Display was called with Username as:- Fred for Column:- TargetWeight. The Cursor contains 5 .
Display was called with Username as:- Fred for Column:- TargetSteps. The Cursor contains 5 .
- Примечание 5, потому чтопри тестировании новые данные вставляются при каждом запуске, поэтому вышеприведенное указывает на 5-й запуск.
Или в случае, если ничего не найдено (ваша текущая проблема), что-то вроде : -
05-18 23:11:40.342 2926-2926/fitness.fitness D/DISPLAYDATAINFO: Display was called with Username as:- Tom for Column:- Weight. The Cursor contains 0 .
Display was called with Username as:- Tom for Column:- Height. The Cursor contains 0 .
Display was called with Username as:- Tom for Column:- TargetWeight. The Cursor contains 0 .
Display was called with Username as:- Tom for Column:- TargetSteps. The Cursor contains 0 .
т.е. курсор содержит 0 = не существует строк для данного имени пользователя (в данном случае Tom).
Проверьте, соответствует ли имя пользователя ожидаемому (обратите внимание, что регистры букв должны совпадать, в приведенной выше строке существует строка для тома, но не для Тома, следовательно, счетчик равен 0).
- Кажется, что поиск столбцов правильный, но все равно проверьте, что столбцы в выходных данных соответствуют ожидаемым (не вижу, что они не будут).