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

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

Войти
Регистрация
Восстановить пароль
 
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
#1

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

30.09.2015, 18:19. Просмотров 559. Ответов 6
Метки нет (Все метки)

Здравствуйте.Помогите пожалуйста разобраться.
Суть такая.Есть две таблицы в бд.Нужно вытащить значение из одной таблицы и подставить в другую.
Добустим есть 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2015, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вытащить значение из таблицы бд sqlite (Программирование Android):

Вытащить информацию из SQLite на новое Activity - Программирование Android
Здравствуйте! У меня есть 3 класса: В DB создаю базу данных, записи добавляются прямо из приложения. В MainActivity по данным из...

Вытащить информацию из базы данных Sqlite - Программирование Android
Здравствуйте! Пишу простенькое приложение "Справочник". В кратком что у меня есть: 3 класса: MainActivity - тут у меня расположен ListView...

SQLite Связаные таблицы - Программирование Android
Есть таблицы Магазин и товар - Магазин как ключевая. Одну таблицу создает сразу две не хочет. class DBHelper extends...

Запись данных в 2 таблицы SQLite - Программирование Android
Как заполнять данные в базу данных при двух таблицах? Получается лишь в одну таблицу занести данные. А как их заносить в другую?. Есть...

Передача SQLite таблицы по TCP - Программирование Android
Подскажите как сделать хотя бы в теории, от примера не откажусь.

SQLite дополнить записи из таблицы - Программирование Android
Можно ли составить подобный запрос (вроде видел нечто подобное, но повторно найти пример не получилось) Есть таблица AAA. На ее основе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
30.09.2015, 19:01 #2
Цитата Сообщение от snezhok11 Посмотреть сообщение
Нужно сделать так,что бы в списке отоброжались значения TABLE1 у которых поля lang равны значениям TABLE2 полей lang.
Тут не понятно. Возможно TABLE1.lang = TABLE2.id ?
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
30.09.2015, 19:21  [ТС] #3
Цитата Сообщение от Mikalai Посмотреть сообщение
Возможно TABLE1.lang = TABLE2.id ?
Нет нужен не id,а второе поле.
Делаю многоязычность приложения.В одной таблице будут тексты на разных языках пример TABLE1 поля id,text,lang Во второй таблице бдут настройки юзера по языку пример TABLE2 id,lang Где юзер будет выбирать Язык приложения и обновлять поле lang.После чего оброщаемся к TABLE2 и уже смотрим по полю lang,на каком язеке отображать text из TABLE1
Да вообщем я просто не понимаю как вытащить нужное значение из поля и вставить его в другую таблицу.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
30.09.2015, 19:56 #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  [ТС] #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
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
30.09.2015, 21:23 #6
Я всё равно не догоняю идею ))) Советую ознакомиться с уроками 34-39 вот тут.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,433
Записей в блоге: 2
30.09.2015, 23:31 #7
Ну да, t1.Lang = t2.Lang. но какая-то странная структура, связь между таблицами непонятная
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2015, 23:31
Привет! Вот еще темы с ответами:

База SQLite: метод по созданию таблицы не вызывается - Программирование Android
Не пойму что не так. Раньше с ним не работал Пытался реализовать пример из сети, но что то не хочет, подозреваю что не создана сама...

Отрицательное значение id в SQLite - Программирование Android
Добавляю запись в БД ContentValues cv = new ContentValues(); db = openOrCreateDatabase("myDB.db", SQLiteDatabase.OPEN_READWRITE,...

Как вытащить значение из таблицы с WEB страницы - VBA
<table class="page"> <thead> <tbody> <tr> <td bgcolor=""> <a href="/gptr/user_info.php?uid=722154"> ...

Как из таблицы access вытащить значение последней записи определенного поля? - VBA
Как из таблицы access вытащить значение последней записи определенного поля?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.09.2015, 23:31
Ответ Создать тему
Опции темы

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