Форум программистов, компьютерный форум CyberForum.ru

Как вытащить значение из таблицы бд sqlite - Android

Восстановить пароль Регистрация
 
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
30.09.2015, 18:19     Как вытащить значение из таблицы бд sqlite #1
Здравствуйте.Помогите пожалуйста разобраться.
Суть такая.Есть две таблицы в бд.Нужно вытащить значение из одной таблицы и подставить в другую.
Добустим есть TABLE1 с полями id,name,lang и TABLE2 с полями id,lang.Нужно сделать так,что бы в списке отоброжались значения TABLE1 у которых поля lang равны значениям TABLE2 полей lang.

Отоброжение списка из одной таблицы
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 @Override
    public void onResume(){
        super.onResume();
        try {
            sqlHelper.open();
           
                    userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                    DatabaseHelper.COLUMN_NAME_LANG + "=?", new String[]{"Русский"});
            String[] headers = new String[]{DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_YEAR};
            userAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice,
                    userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0);
            header.setText("Найдено элементов: " + String.valueOf(userCursor.getCount()));
            mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            mList.setAdapter(userAdapter);
 
        }
        catch (SQLException ex){}
    }
Нужно заменить слово "Русский" на значение из другой таблицы.
Пробывал делать вот так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    @Override
    public void onResume(){
        super.onResume();
        try {
            sqlHelper.open();
            // получаем элемент из бд
           userCursor2 = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE2, null);
            String catName = userCursor2.getString(userCursor2.getColumnIndex(DatabaseHelper.COLUMN_NAME_LANG));
            
 
                    userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                    DatabaseHelper.COLUMN_NAME_LANG + "=?", new String[]{catName});
            String[] headers = new String[]{DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_YEAR};
            userAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice,
                    userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0);
            header.setText("Найдено элементов: " + String.valueOf(userCursor.getCount()));
            mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            mList.setAdapter(userAdapter);
 
        }
        catch (SQLException ex){}
    }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
30.09.2015, 19:01     Как вытащить значение из таблицы бд sqlite #2
Цитата Сообщение от snezhok11 Посмотреть сообщение
Нужно сделать так,что бы в списке отоброжались значения TABLE1 у которых поля lang равны значениям TABLE2 полей lang.
Тут не понятно. Возможно TABLE1.lang = TABLE2.id ?
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
30.09.2015, 19:21  [ТС]     Как вытащить значение из таблицы бд sqlite #3
Цитата Сообщение от Mikalai Посмотреть сообщение
Возможно TABLE1.lang = TABLE2.id ?
Нет нужен не id,а второе поле.
Делаю многоязычность приложения.В одной таблице будут тексты на разных языках пример TABLE1 поля id,text,lang Во второй таблице бдут настройки юзера по языку пример TABLE2 id,lang Где юзер будет выбирать Язык приложения и обновлять поле lang.После чего оброщаемся к TABLE2 и уже смотрим по полю lang,на каком язеке отображать text из TABLE1
Да вообщем я просто не понимаю как вытащить нужное значение из поля и вставить его в другую таблицу.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
30.09.2015, 19:56     Как вытащить значение из таблицы бд sqlite #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
snezhok11, ну так в поле TABLE1.lang хранятся ид из TABLE2.id которые нужно заменить на соответствующие поля TABLE2.lang? Тогда SQLзапрос будет примерно такой:
SQL
1
SELECT * FROM TABLE1, TABLE2 WHERE TABLE1.lang = TABLE2.id
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
30.09.2015, 21:15  [ТС]     Как вытащить значение из таблицы бд sqlite #5
Цитата Сообщение от Mikalai Посмотреть сообщение
в поле TABLE1.lang хранятся ид из TABLE2.id которые нужно заменить на соответствующие поля TABLE2.lang?
Нет в TABLE1 не будет id из TABLE2 заменять не чего не нужно,нужно вывести поля с одинаковыми значениями.
В TABLE2 будет одна строка с id,lang где lang будет изменяться в зависимости от настроек юзера тоесть будет просто обновляться к примеру Юзер выбрал "Русский" поле id в TABLE2 не меняется обновляется только lang соответственно в поле lang прописывается "Русский"
В TABLE1 уже созданы строки с id,text,lang где lang в зависимости от языка "Русский","English" и т.д.Тоесть нужно сопоставить lang из двух таблиц.
По вашему примеру будет так
SQL
1
SELECT * FROM TABLE1, TABLE2 WHERE TABLE1.lang = TABLE2.lang
Вот только как это сделать я не знаю.Откуда мне взять TABLE1.lang
мой запрос выглядет так
SQL
1
2
userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                    DatabaseHelper.COLUMN_NAME_LANG + "=?", NEW String[]{"English"});
В php я бы сделал это через переменную,а в android не получается.Либо я что то делаю не так.

Добавлено через 11 минут
Попробывал сделать по вашему примеру вот так
SQL
1
2
userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE,DatabaseHelper.TABLE2 + " where " +
                    DatabaseHelper.TABLE.lang = DatabaseHelper.TABLE2.lang);
.lang в запросе светится красным

Добавлено через 21 минуту
Цитата Сообщение от Mikalai Посмотреть сообщение
1
SELECT * FROM TABLE1, TABLE2 WHERE TABLE1.lang = TABLE2.lang
Спасибо за помощь
сделал такой запрос и все заработало
SQL
1
userCursor = sqlHelper.database.rawQuery("select users. * from users,user_lang where users.lang = user_lang.lang", NULL);
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
30.09.2015, 21:23     Как вытащить значение из таблицы бд sqlite #6
Я всё равно не догоняю идею ))) Советую ознакомиться с уроками 34-39 вот тут.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2015, 23:31     Как вытащить значение из таблицы бд sqlite
Еще ссылки по теме:

Android Запись данных в 2 таблицы SQLite
Android Как сделать reindex в sqlite?
База SQLite: метод по созданию таблицы не вызывается Android
Android Вытащить информацию из SQLite на новое Activity
Android Как записывать данные из SQLite в ListView

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

Или воспользуйтесь поиском по форуму:
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
30.09.2015, 23:31     Как вытащить значение из таблицы бд sqlite #7
Ну да, t1.Lang = t2.Lang. но какая-то странная структура, связь между таблицами непонятная
Yandex
Объявления
30.09.2015, 23:31     Как вытащить значение из таблицы бд sqlite
Ответ Создать тему
Опции темы

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