Возникла проблема при отображении данных из базы данных SQLite в текстовое представление - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь получить данные из базы данных SQLite и отобразить вывод из текстового представления. Программа не падает, но я не могу отобразить данные.

Данные извлекаются, поскольку они отображаются в журнале.

try{
        SQLiteDatabase sqLiteDatabase= this.openOrCreateDatabase("User",MODE_PRIVATE,null);

        sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS users (name VARCHAR,age INT(3))");
        sqLiteDatabase.execSQL("INSERT INTO users (name,age) VALUES ('rob',34)");
        sqLiteDatabase.execSQL("INSERT INTO users (name,age) VALUES ('Souvik',20)");

        Cursor c= sqLiteDatabase.rawQuery("SELECT * FROM users",null);

        int nameIndex=c.getColumnIndex("name");
        int ageIndex=c.getColumnIndex("age");

        c.moveToFirst();


        while (c!=null){
            x.add(c.getString(nameIndex));
            x.add(Integer.toString(c.getInt(ageIndex)));
            Log.i("name",c.getString(nameIndex));
            c.moveToNext();
        }

        txt.setText(x.get(2));


    }catch (Exception e){
        e.printStackTrace();
    }

1 Ответ

0 голосов
/ 03 ноября 2019

Вы написали бесконечный цикл while, потому что c не является и никогда не будет null. Удалите эту строку:

c.moveToFirst();

и измените цикл следующим образом:

while (c.moveToNext){
    x.add(c.getString(nameIndex));
    x.add(Integer.toString(c.getInt(ageIndex)));
    Log.i("name",c.getString(nameIndex));
}

Я предполагаю, что x - это List, где вы сохраняете результаты. Таким образом, после окончания цикла у вас будет 4 элемента в List. С помощью этой строки:

txt.setText(x.get(2));

вы устанавливаете текст TextView для 3d-элемента List. Конечно, это будет работать, если база данных будет создана, таблица будет создана и операторы INSERT не завершатся с ошибкой. Поскольку весь ваш код находится внутри блока try/catch, приложение не будет аварийно завершать работу при возникновении проблемы.

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