Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
#1

Запрос к БД возвращает некорректный результат - Программирование Android

09.12.2016, 08:56. Просмотров 175. Ответов 7
Метки нет (Все метки)

В готовую БД пытаюсь вставлять записи из файла, который лежит в res/raw. Вот мой код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void updateRusLakTable(InputStream in) throws IOException {
    BufferedReader buf = new BufferedReader(new InputStreamReader(in));
    String strFromFile;
    while ((strFromFile = buf.readLine()) != null) {
        int indexSymbol = strFromFile.indexOf("#");
        String word = strFromFile.substring(0, indexSymbol).trim();
        String translation = strFromFile.substring(indexSymbol + 1, strFromFile.length());
        String query = "SELECT " + DictionaryEntry.COLUMN_WORD + " FROM " + DictionaryEntry.TABLE_NAME + " WHERE " + DictionaryEntry.COLUMN_WORD + " = " + """ + word.trim() + """;
        Cursor c = db.database.rawQuery(query, null);
        try {
            if (c.getCount() == 0) {
                ContentValues cv = new ContentValues();
                cv.put(DictionaryEntry.COLUMN_WORD, word);
                cv.put(DictionaryEntry.COLUMN_TRANSLATION, translation);
 
                long newRowId = db.database.insert(DictionaryEntry.TABLE_NAME, null, cv);
            }
        } finally {
            c.close();
        }
    }
    buf.close();
    buf = null;
}
Первый раз когда выполняется метод все корректно добавляется. НО при каждом следующем запуске метода первая строка из файла, который лежит в res/raw опять добавляется в БД. Подскажите почему так происходит? Я не могу понять в чем причина
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2016, 08:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрос к БД возвращает некорректный результат (Программирование Android):

RX и Retrofit запрос, который ничего не возвращает - Программирование Android
Делаю запросы так: subscription = getApi().getData(token) .subscribeOn(Schedulers.io()) ...

Отправить post запрос с параметрами на сайт и получить результат - Программирование Android
Всем привет! Делаю проект для сайта школы. Нужно отправить post запрос с параметрами на сайт и получить результат. Стандартный способ не...

bc возвращает некорректный результат - Bash
Пишу: bc -l <<< 0.11+0.00+0.00+0.00 Возвращает результат .11 Как заставить возвращать? 0.11

1C 8.x Запрос выводит некорректный результат - 1С
Есть запрос "ВЫБРАТЬ |" + ?(неСворачиватьПоСериям, "ПартииТоваровНаСкладахБухгалтерскийУчет.СерияНоменклатуры, ", "") + " ...

Запрос не возвращает результат - PHP БД
Здравствуйте. имеется такой запрос SELECT `id`, `last_name`, `first_name`, `region`, `region_id`, `city`, `city_id`, `country`,...

Запрос всегда возвращает результат - PHP
Доброго времени суток Есть код: <?php error_reporting(E_ALL); if (isset($_POST)){ if (isset($_POST, $_POST, $_POST, $_POST)){...

7
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,674
09.12.2016, 10:10 #2
Гаджи, может в запросе надо использовать одинарные кавычки для обрамления строки и на самом деле он не успешный - поэтому количество элементов в выборке равно нулю?
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
09.12.2016, 10:29  [ТС] #3
В других местах похожие запросы. Но почему-то в этом методе для первой строки когда выборка в курсор происходит каждый раз возвращает количество записей 0, хотя в БД уже есть запись

Добавлено через 10 минут
Или может есть способ получше записывать данные в БД?

Добавлено через 10 секунд
Из файла
0
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,674
09.12.2016, 10:54 #4
Гаджи, вы пробовали так
+ " = " + "'" + word.trim() + "'"
?

Добавлено через 52 секунды
...кстати, вы записываете в базу слово без trim, а выборка идет с trim

Добавлено через 52 секунды
...правда оно с самого начала trim - второй вызов по идее не влияет...
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
09.12.2016, 10:56  [ТС] #5
вы пробовали так
+ " = " + "'" + word.trim() + "'"
?

пробовал так. То же самое
0
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,674
09.12.2016, 11:12 #6
Цитата Сообщение от Гаджи Посмотреть сообщение
пробовал так. То же самое
очень странно ибо эта строка не спроста подсвечивается именно как строка - то есть там не результат вызова word.trim(), а реально тупо текст значение которого word.trim()

Добавлено через 47 секунд
...экранировать двойные кавычки пробовали?
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
09.12.2016, 11:17  [ТС] #7
Да, в коде они экранированы. Тут когда вставлял код \ не отобразилась почему-то. Вторую и последующие строки ищет нормально и правильно выводит количество записей в курсоре. А вот с первой строкой не пойму почему так.

Добавлено через 2 минуты
Вот код еще раз выложу. Выводу специально сделал чтобы количество записей в курсоре видеть

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void updateRusLakTable(InputStream in) throws IOException {
        BufferedReader buf = new BufferedReader(new InputStreamReader(in));
        updateArrayList.clear(); //Коллекция хранит строки из файла, где хранятся слова, добавляемые в БД
        String strFromFile; //Отдельная строка из файла
        while ((strFromFile = buf.readLine()) != null) {
            int indexSymbol = strFromFile.indexOf("#");
            String word = strFromFile.substring(0, indexSymbol).trim();
            String translation = strFromFile.substring(indexSymbol + 1, strFromFile.length()).trim();
            String query = "SELECT " + DictionaryEntry.COLUMN_WORD + " FROM " + DictionaryEntry.TABLE_NAME + " WHERE " + DictionaryEntry.COLUMN_WORD + " = " + """ + word.trim() + """;
            Cursor c = db.database.rawQuery(query, null);
            System.out.println("word = " + word);
            System.out.println("query = " + query);
            System.out.println("count = " + c.getCount());
            System.out.println("****");
            try {
                if (c.getCount() == 0) {
                    ContentValues cv = new ContentValues();
                    cv.put(DictionaryEntry.COLUMN_WORD, word);
                    cv.put(DictionaryEntry.COLUMN_TRANSLATION, translation);
                    cv.put(DictionaryEntry.COLUMN_FAVORITES, "0");
                    cv.put(DictionaryEntry.COLUMN_TYPE, "1");
 
                    long newRowId = db.database.insert(DictionaryEntry.TABLE_NAME, null, cv);
                }
            } finally {
                c.close();
            }
        }
        buf.close();
        buf = null;
    }
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
09.12.2016, 18:38 #8
После строки
Java
1
Cursor c = db.database.rawQuery(query, null);
Вызовите
Java
1
с.moveToFirst();
Добавлено через 15 секунд
https://developer.android.com/refere...l#moveToFirst()
0
09.12.2016, 18:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 18:38
Привет! Вот еще темы с ответами:

MySQL Mysql запрос не возвращает ожидаемый результат - PHP БД
Всем привет. Возникла не большая проблема з запросом и отображениям данных. $start_date = $_POST; $finish_date = $_POST; ...

MySQL Запрос из PHP к БД MySQL возвращает результат в неправильной кодировке - PHP БД
запрос из пхп : <?php $query = "select * from `news database` order by date,time desc "; $result = $connection->query($query); ...

функция mysql_query возвращает один и тот же результат (false) и тогда, когда запрос на удаление выполняется и - PHP
Подскажите,пожалуйста,почему функция mysql_query возвращает один и тот же результат (false) и тогда когда запрос на удаление выполняется,и...

Некорректный результат запроса - 1С
доброго дня Сделал отчет вроде бы ищет ,а вроде и нет он находит несколько позиций и все начинаешь проверять руками открывать каждый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru