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

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

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

Доступ к базе данных - Android

04.04.2014, 10:27. Просмотров 880. Ответов 6
Метки нет (Все метки)

Здравствуйте. Имеется три активити (MainActivity (основная), Program (программы подготовки) и Speciality (специальности)), база данных (myDB), которая содержит 3 таблицы и которая создана в MainActivity. Как сделать чтобы при нажатии на кнопку, расположенную в активити Program считывались данные из БД? Желательно с помощью Intent
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dan41k
]:->
97 / 91 / 13
Регистрация: 12.11.2013
Сообщений: 398
04.04.2014, 10:54     Доступ к базе данных #2
В классе Program
Java
1
2
Intent intent = new Intent (Program.this, MainActivity.class);
     startActivityForResult(intent, 1);
В MainActivity

Java
1
2
3
Intent intent = new Intent();
    intent.putExtra(//сюда данные из БД);
    setResult(RESULT_OK, intent);
И в Program создаете метод

Java
1
2
3
4
5
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data == null) {return;}
    **переменная** = data.getStringExtra("name"); // StringExtra это для примера. Данные могут быть любые
  }
Добавлено через 1 минуту
А вообще, желательно отделите вашу БД от MainActivity в отдельный класс. Тогда к ней можно будет удобно обращаться из любой Activity.
TAMEPJlAH
1 / 1 / 0
Регистрация: 02.05.2010
Сообщений: 74
07.04.2014, 12:24  [ТС]     Доступ к базе данных #3
Цитата Сообщение от dan41k Посмотреть сообщение
В MainActivity
intent.putExtra(//сюда данные из БД);
нужно же как-то различать какую кнопку нажали и уже в зависимости от этого передавать определенные данные... а передавать в Program все данные из БД и уже в Program выбирать нужные не вариант
dan41k
]:->
97 / 91 / 13
Регистрация: 12.11.2013
Сообщений: 398
07.04.2014, 12:45     Доступ к базе данных #4
ну так исплементите в Program onClickListener, реализуйте метод onClick, и в нем отслеживайте нажатие определенной кнопки:

Java
1
2
3
4
5
6
7
8
9
10
11
switch(view.getId()) {
     case R.id.btn1:
     ...
     break;
 
     case R.id.btn2:
     ....
     break;
 
     ...
}
TAMEPJlAH
1 / 1 / 0
Регистрация: 02.05.2010
Сообщений: 74
08.04.2014, 10:18  [ТС]     Доступ к базе данных #5
Выделил БД в отдельный класс (DataBase)

Program
Кликните здесь для просмотра всего текста
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
32
33
34
35
@Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn1:
        Intent intent1 = new Intent(Program.this, DataBase.class);
        startActivityForResult(intent1, 1);
      break;
    case R.id.btn2:
        Intent intent = new Intent (Program.this, DataBase.class);
        startActivityForResult(intent, 1);
      break;
    default:
      break;
    }
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data == null) {return;}
    String free = data.getStringExtra("free");
    String qualification = data.getStringExtra("qualification");
    String skill1 = data.getStringExtra("skill1");
    String skill2 = data.getStringExtra("skill2");
    String skill3 = data.getStringExtra("skill3");
    String skill4 = data.getStringExtra("skill4");
    
    Intent intent = new Intent(Program.this, speciality.class);
    intent.putExtra("free", free);
    intent.putExtra("qualification", qualification);
    intent.putExtra("skill1", skill1);
    intent.putExtra("skill2", skill2);
    intent.putExtra("skill3", skill3);
    intent.putExtra("skill4", skill4);
    startActivity(intent);
  }

DataBase
Кликните здесь для просмотра всего текста
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
32
33
34
35
36
37
Intent intent = new Intent();
    String table = "position as PS inner join qualification as QL on PS.idqual = QL.id inner join skill as SL on PS.id = SL.posid";
    String columns[] = { "PS.id as id", "PS.free as free", "QL.name as qualification", "SL.name as skill" };
    c = db.query(table, columns, null, null, null, null, null);
      if (c.moveToFirst()) {
        int idColIndex = c.getColumnIndex("id");
        int freeColIndex = c.getColumnIndex("free");
        int qualificationColIndex = c.getColumnIndex("qualification");
        int skillColIndex = c.getColumnIndex("skill");
        int i=1;
        do {
                if (c.getInt(idColIndex) == 1) {
                    intent.putExtra("free", c.getString(freeColIndex));
                    intent.putExtra("qualification", c.getString(qualificationColIndex));
                    if (i == 1 ) {
                        intent.putExtra("skill1", c.getString(skillColIndex));
                    } else if (i == 2) {
                        intent.putExtra("skill2", c.getString(skillColIndex));
                    } else if (i == 3) {
                        intent.putExtra("skill3", c.getString(skillColIndex));
                    } else if (i == 4) {
                        intent.putExtra("skill4", c.getString(skillColIndex));
                    }
                }
                Log.d(LOG_TAG, "i= " + i);
                i++;
                Log.d(LOG_TAG,
                "id = " + c.getInt(idColIndex) +
                ", free = " + c.getInt(freeColIndex) + 
                ", qualification = " + c.getString(qualificationColIndex) + 
                ", skill = " + c.getString(skillColIndex));
          } while (c.moveToNext());
        }
    c.close();
    Log.d(LOG_TAG, "--- DataBase ---");
    setResult(RESULT_OK, intent);
    finish();

В Speciality простой вывод данных на экран.
При нажатии и на btn1, и на btn2 выводятся одни и те же данные. Я так понимаю при вызове DataBase нужно передавать какая кнопка была нажата. Можно ли это сделать?
Пробовал в Program перед startActivityForResult писать intent.putExtra("btn", *номер кнопки*), но считать btn в DataBase не получается... Может я что-то не так делаю?
dan41k
]:->
97 / 91 / 13
Регистрация: 12.11.2013
Сообщений: 398
08.04.2014, 10:53     Доступ к базе данных #6
Положите, например, любой int или String туда, который будет разный для каждого Intent'a. И if'oм определяйте, какой Intent получен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2014, 13:23     Доступ к базе данных
Еще ссылки по теме:

Не удается подключиться к базе данных Android
Android Подключиться к готовой базе данных
Поиск ближайших магазинов в базе данных Android
AndroidStudio подключение к базе данных Oracle Android
Подключение к базе данных Android

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

Или воспользуйтесь поиском по форуму:
TAMEPJlAH
1 / 1 / 0
Регистрация: 02.05.2010
Сообщений: 74
09.04.2014, 13:23  [ТС]     Доступ к базе данных #7
С этим разобрался, все заработало. dan41k, с меня спасибо
Yandex
Объявления
09.04.2014, 13:23     Доступ к базе данных
Ответ Создать тему
Опции темы

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