Как исправить пустую строку при получении из базы данных? - PullRequest
4 голосов
/ 28 марта 2019

Я получаю строку из базы данных, используя идентификатор столбца. Когда я ввожу запрос в Браузер БД SQLite, он возвращает то, что нужно, но тот же запрос ничего не возвращает при кодировании через Java.

В моей базе данных содержится таблица с именем «наркотики», которая состоит из 3 столбцов, то есть drug_id, drug_name и drug_overview. Используя drug_id, я получаю drug_overview. Я пробовал запрос в браузере БД, который возвращает мне правильную строку из drug_overview, но тот же запрос ничего не возвращает при кодировании через Java.

Запрос браузера SQLite DB:

SELECT * FROM drugs Where drug_id = 50;

КОД JAVA:

String query105 = "SELECT * FROM drugs Where drug_id = " + drug_id;
                        Log.e("TESTDB1","Drugs table query: " + query105);
                        Cursor c105 = db.rawQuery(query105,null);

                        if (c105 != null){

                            while (c105.moveToNext()){

                                String overview = c105.getString(c105.getColumnIndexOrThrow("drug_overview"));
                                Log.e("TESTDB1","Overview: " + overview);

                            }

                            c105.close();

                        }

Ожидаемый результат Обзор: ацикловир является противовирусным препаратом. Это замедляет рост и распространение вируса герпеса в организме. Это не вылечит герпес, но это может уменьшить симптомы инфекции. Ацикловир используется для лечения инфекций, вызванных вирусами герпеса, такими как генитальный герпес, герпес, опоясывающий лишай и ветряная оспа, а также ветряная оспа (ветряная оспа), и цитомегаловирус. Ацикловир может также использоваться в целях, не указанных в данном руководстве лекарства.

Но фактический результат - Обзор: пусто , Когда я меняю идентификатор в моем запросе, он дает правильный результат от другого препарата.

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Я боюсь, что ваша проблема может быть связана с самими данными, как сказал Майк в комментарии. Я думаю, что ваша база данных в файлах старая, и вы не скопировали последние в папку.Попробуйте переустановить и удалить старую базу

0 голосов
/ 28 марта 2019

Ваш запрос возвращает 0 или 1 строку, поэтому я думаю, что вы должны использовать c105.moveToFirst() вместо c105.moveToNext().moveToNext предполагается использовать для списка, а не для одной записи.Сделайте что-то вроде:

if (c105.moveToFirst()){
         String overview = c105.getString(c105.getColumnIndex("drug_overview"));
         // do something with the result                    
    }
c105.close();
...