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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
#1

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Android

16.08.2015, 22:01. Просмотров 1275. Ответов 48
Метки нет (Все метки)

Ребят, всем привет! накидайте какие-нить идеи по реализации

ситуация такая есть таблицы - "списки_жанров", "фильмы", "режиссеры"
мне нужно на актитиви с добавлением фильмов иметь такие поля

поле для ввода названия_фильма
дропдаун со списком имеющихся жанров
дропдаун со списком имеющихся режиссеров

то есть задача прикрепить определенный фильм к определенному режиссеру и жанру
знаю, что вместо дропдауна тут используется Spinner кажется, но как осуществить все остальное не в курсе, знаю как это делается в asp.net , а тут полный ноль, подскажите идейки, главная трабл, что не представляю как выбрать списки жанров и режиссеров из таблиц
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2015, 22:01     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Посмотрите здесь:

Android Наилучший способ хранения "таблиц в таблицах"
Android EditText и добавление символов в него через собственную "клавиатуру"
Android Не работает эмулятор (прекращена работа программы "emulator-arm.exe"
Unexpected namespace prefix "map" found for tag fragment Android
Android Осуществить парсинг JSON с помощью готового макета "VKApiMessage"
Android Работа с файлами "налету"
Работа со звуком - "На самом устройстве" - Программно Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
18.08.2015, 22:32     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #41
Какие ид и куда сместились? я не очень понимаю. Хорошо поставленный вопрос это 50% ответа ))
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
18.08.2015, 22:38  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #42
Mikalai, исправил, если интересно, теперь все работает как надо, только с ID непонятна ситуация, беретсся из спинера...не пойму помешает ли мне это потом при выборке таблиц по условию или нет

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
   ContentValues cv = new ContentValues();
            ContentValues cv1 = new ContentValues();
 
            String spinnerPosition2 = spinner_author.getSelectedItem().toString();
            String spinnerPosition3 = spinner_list.getSelectedItem().toString();
           // String stringFromSpinner1 = LTRadapter.getItem(spinnerPosition1);
          //  String stringFromSpinner2 = LTRadapter.getItem(spinnerPosition2);
            Cursor cursor1 = db.rawQuery("select _id from " + DatabaseHelper.TABLE + " where "
                    + DatabaseHelper.COLUMN_LNAME + "=?", new String[]{spinnerPosition3});
            Cursor cursor2 = db.rawQuery("select _id from " + DatabaseHelper.TABLE2 + " where "
                    + DatabaseHelper.COLUMN_ASURNAME + "=?", new String[]{spinnerPosition2});
            int idFromDB1 = 0;
            int idFromDB2 = 0;
            if(cursor1.moveToFirst()) {
                idFromDB1 = cursor1.getInt(cursor1.getColumnIndex("_id"));
            }
            if(cursor2.moveToFirst()) {
                idFromDB2 = cursor2.getInt(cursor2.getColumnIndex("_id")); /////////  от тут поидее должен быть твой искомый ID
            }
            cv.put(DatabaseHelper.COLUMN_LID, idFromDB1);
            cv.put(DatabaseHelper.COLUMN_BNAME, bookBox.getText().toString());
            cv1.put(DatabaseHelper.COLUMN_BID, bookBox.getId());
            cv1.put(DatabaseHelper.COLUMN_AID, idFromDB2);
            final long id = getArguments() != null ? getArguments().getLong("id") : 0;
            if (id > 0) {
                db.update(DatabaseHelper.TABLE1, cv, DatabaseHelper.COLUMN_ID1 + "=" + String.valueOf(id), null);
            } else {
                db.insert(DatabaseHelper.TABLE1, null, cv);
                db.insert(DatabaseHelper.TABLE3, null, cv1);
Добавлено через 5 минут
Mikalai, ну к примеру в спиннере имеются такие значения
-актер1 [id = 1]
-актер2 [id =2]
-актер3 [id =3]
-актер4 [id =4]
если я удалю "актер3" то id актер4 станет = 3!!!!
потом ведь в базе будут дублирующие строки в поле ID...
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
18.08.2015, 22:53     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #43
удалять/добавляь данные нужно не из/в spinner, а из/в базу и после этого заново заполнять новыми данными view-элементы. Примерно об этом говорит нам MVC-паттерн
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
18.08.2015, 23:01  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #44
Mikalai, согласен, но мы ведь их базы и заполняем
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
spinner_author = (Spinner) rootView.findViewById(R.id.spinner_authors);
            userCursor1 = db.rawQuery("select * from " + DatabaseHelper.TABLE2, null);
            List<String> headers1 = new ArrayList<>();
            if (userCursor1 != null) {
                if (userCursor1.moveToFirst()) {
                    do {
                        String string = userCursor1.getString(userCursor1.getColumnIndex(DatabaseHelper.COLUMN_ASURNAME));
                        headers1.add(string);
                    } while (userCursor1.moveToNext());
                }
            }
 
            ArrayAdapter<String> LTRadapter1 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers1);
            LTRadapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
            spinner_author.setAdapter(LTRadapter1);
Mikalai
18.08.2015, 23:05
  #45

Не по теме:

Ну вот и ладненько. Раз всё хорошо, то можно отдыхать )))

Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
19.08.2015, 07:18     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #46
Берете курсор, суете в адаптер.
Удаляете актера из БД, [обновляете курсор], обновляете адаптер.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
19.08.2015, 12:14  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #47
Rube, что интересно я даже еще не прописал удаление из этой таблицы))) а оно уже не робит(
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
19.08.2015, 22:53     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #48
Код выклади, проверим чего там неправильно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2015, 00:11     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Еще ссылки по теме:

Ошибка "Method call expected" при шифровании RSA Android
Услуга - "поругайте мой код" есть тут такая?) Android
"Error while reading RSS" при попытке загрузить новости Android
Отключить перескакивание между edittext после нажатия "готово" Android
Android UnknownHostException: Unable to resolve host "api.openweathermap.org"

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

Или воспользуйтесь поиском по форуму:
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
22.08.2015, 00:11  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #49
Rube, вроде исправил этот момент, теперь берет правильный id, но появилась новая трабл

Java
1
2
3
4
5
6
7
8
9
10
11
 cv.put(DatabaseHelper.COLUMN_LID, idFromDB1);
                cv.put(DatabaseHelper.COLUMN_BNAME, bookBox.getText().toString());
                cv1.put(DatabaseHelper.COLUMN_BID, bookBox.getId());
                cv1.put(DatabaseHelper.COLUMN_AID, idFromDB2);
 
                if (id > 0) {
                    db.update(DatabaseHelper.TABLE1, cv, DatabaseHelper.COLUMN_ID1 + "=" + String.valueOf(id), null);
                    db.update(DatabaseHelper.TABLE3, cv, DatabaseHelper.COLUMN_ID3 + "=" + String.valueOf(id), null);
                } else {
                    db.insert(DatabaseHelper.TABLE1, null, cv);
                    db.insert(DatabaseHelper.TABLE3, null, cv1);
на строке инсертов пишет что колонка COLUMN_AID не уникальна, добавление не происходит

Добавлено через 41 минуту
Rube, и это исправил, теперь пишет, что колонка эта же пустая! хотя при дебаге в ней лежит значение! вот тут я в отчаянии!
android.database.sqlite.SQLiteConstraintException: Actors.a_id may not be NULL (code 19)
Yandex
Объявления
22.08.2015, 00:11     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ответ Создать тему
Опции темы

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