Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
liroykaz
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 31
#1

Как подключаться к БД из разных активностей? Как создать 2 таблицы? - Программирование Android

29.04.2015, 18:46. Просмотров 417. Ответов 1
Метки нет (Все метки)

Добрый вечер!
Мучаюсь с таким вопросом. Есть БД, нужно создать 2 таблицы. Одна таблица групп в одной активности, вторая таблица учащихся в другой активности.
Сначала создал 2 активности и в каждой по базе данных.
Java
1
2
3
4
public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, DB_VERSION);
        }
то есть myDB в одной активности и myDB1 в другой, но как я понимаю, я создал 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
public class RedactGrupp extends Activity implements OnClickListener {
 
    final String LOG_TAG = "myLogs";
 
    Button btnAdd, btnUpdate, btnDelete, btnRead, btnVivod;
    EditText IDGrupp, NameGrupp, NameFak, NumVivod;
 
    DBHelper dbHelper;
 
    final int DB_VERSION = 24; // версия БД
    final String DROP_TABLE = "DROP TABLE IF EXISTS "+"mygrupp";
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.redact_grupp);
 
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnAdd.setOnClickListener(this);
 
        btnUpdate = (Button) findViewById(R.id.btnUpdate);
        btnUpdate.setOnClickListener(this);
 
        btnDelete = (Button) findViewById(R.id.btnDelete);
        btnDelete.setOnClickListener(this);
 
        btnRead = (Button) findViewById(R.id.btnRead);
        btnRead.setOnClickListener(this);
 
        btnVivod = (Button) findViewById(R.id.btnVivod);
        btnVivod.setOnClickListener(this);
 
        IDGrupp = (EditText) findViewById(R.id.IDGrupp);
        NameGrupp = (EditText) findViewById(R.id.NameGrupp);
        NameFak = (EditText) findViewById(R.id.NameFak);
        NumVivod = (EditText) findViewById(R.id.NumVivod);
 
 
        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(this);
 
        // Описание курсора
        Cursor c;
    }
 
    public void onClick(View v) {
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // получаем данные из полей ввода
        String namegrupp = NameGrupp.getText().toString();
        String namefak = NameFak.getText().toString();
        String id = IDGrupp.getText().toString();
 
        // подключаемся к БД
 
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        switch (v.getId()) {
            case R.id.btnAdd:
                Log.d(LOG_TAG, "--- Insert in mygrupp: ---");
                // подготовим данные для вставки в виде пар: наименование столбца -
                // значение
                cv.put("id", id);
                cv.put("namegrupp", namegrupp);
                cv.put("namefak", namefak);
 
                // вставляем запись и получаем ее ID
                long rowID = db.insert("mygrupp", null, cv);
                Log.d(LOG_TAG, "row inserted, ID = " + rowID);
                break;
            case R.id.btnRead:
                Log.d(LOG_TAG, "--- Rows in mygrupp: ---");
                // делаем запрос всех данных из таблицы mytable, получаем Cursor
                Cursor c = db.query("mygrupp", null, null, null, null, null, null);
 
                // ставим позицию курсора на первую строку выборки
                // если в выборке нет строк, вернется false
                if (c.moveToFirst()) {
 
                    // определяем номера столбцов по имени в выборке
                    int idColIndex = c.getColumnIndex("id");
                    int gruppColIndex = c.getColumnIndex("namegrupp");
                    int fakColIndex = c.getColumnIndex("namefak");
 
                    do {
                        // получаем значения по номерам столбцов и пишем все в лог
                        Log.d(LOG_TAG,
                                "ID = " + c.getInt(idColIndex) + ", namegrupp = "
                                        + c.getString(gruppColIndex) + ", namefak = "
                                        + c.getString(fakColIndex));
 
                        // переход на следующую строку
                        // а если следующей нет (текущая - последняя), то false -
                        // выходим из цикла
                    } while (c.moveToNext());
                } else
                    Log.d(LOG_TAG, "0 rows");
                c.close();
                break;
            case R.id.btnDelete:
                Log.d(LOG_TAG, "--- Clear mygrupp: ---");
                // удаляем все записи
                int clearCount = db.delete("mygrupp", null, null);
                Log.d(LOG_TAG, "deleted rows count = " + clearCount);
                break;
            case R.id.btnUpdate:
                if (id.equalsIgnoreCase("")) {
                    break;
                }
                Log.d(LOG_TAG, "--- Update mygrupp: ---");
                // подготовим значения для обновления
                cv.put("id", id);
                cv.put("namegrupp", namegrupp);
                cv.put("namefak", namefak);
                // обновляем по id
                int updCount = db.update("mygrupp", cv, "id = ?",
                        new String[] { id });
                Log.d(LOG_TAG, "updated rows count = " + updCount);
                break;
            case R.id.btnDel:
                if (id.equalsIgnoreCase("")) {
                    break;
                }
                Log.d(LOG_TAG, "--- Delete from mygrupp: ---");
                // удаляем по id
                int delCount = db.delete("mygrupp", "id = " + id, null);
                Log.d(LOG_TAG, "deleted rows count = " + delCount);
                break;
        }
        // закрываем подключение к БД
        dbHelper.close();
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, DB_VERSION);
        }
 
        public void onCreate(SQLiteDatabase db) {
            Log.d(LOG_TAG, "--- onCreate database ---");
            // создаем таблицу с полями
            // создаем таблицу с полями
            db.execSQL("create table mygrupp ("
                    + "id integer primary key autoincrement,"
                    + "namegrupp text,"
                    + "namefak text"+ " )");
 
        /*    // создаем таблицу с полями
            db1.execSQL("create table mytable ("
                    + "id integer primary key autoincrement,"
                    + "name text,"
                    + "family text,"
                    + "birthday text,"
                    + "gruppa text"+ ")");*/
        }
 
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(DROP_TABLE);
            onCreate(db);
        }
    }
}


Вот класс активити студентов.
Кликните здесь для просмотра всего текста
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
public class RedactStudentov extends Activity implements OnClickListener {
 
    final String LOG_TAG = "myLogs";
 
    Button btnAdd, btnRead, btnClear, btnUpd, btnDel;
    EditText etName, etFamily, etID, etDR, etGruppa;
 
    DBHelper dbHelper;
 
    final int DB_VERSION = 24; // версия БД
    final String DROP_TABLE = "DROP TABLE IF EXISTS "+"mytable";
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.redact_studentov);
 
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnAdd.setOnClickListener(this);
 
        btnRead = (Button) findViewById(R.id.btnRead);
        btnRead.setOnClickListener(this);
 
        btnClear = (Button) findViewById(R.id.btnClear);
        btnClear.setOnClickListener(this);
 
        btnUpd = (Button) findViewById(R.id.btnUpd);
        btnUpd.setOnClickListener(this);
 
        btnDel = (Button) findViewById(R.id.btnDel);
        btnDel.setOnClickListener(this);
 
        etName = (EditText) findViewById(R.id.etName);
        etFamily = (EditText) findViewById(R.id.etFamily);
        etID = (EditText) findViewById(R.id.etID);
        etDR = (EditText) findViewById(R.id.etDR);
        etGruppa = (EditText) findViewById(R.id.etGruppa);
 
 
        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(this);
    }
 
    public void onClick(View v) {
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // получаем данные из полей ввода
        String name = etName.getText().toString();
        String family = etFamily.getText().toString();
        String id = etID.getText().toString();
        String birthday = etDR.getText().toString();
        String gruppa = etGruppa.getText().toString();
 
 
 
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        switch (v.getId()) {
            case R.id.btnAdd:
                Log.d(LOG_TAG, "--- Insert in mytable: ---");
                // подготовим данные для вставки в виде пар: наименование столбца -
                // значение
                cv.put("name", name);
                cv.put("family", family);
                cv.put("birthday", birthday);
                cv.put("gruppa", gruppa);
 
                // вставляем запись и получаем ее ID
                long rowID = db.insert("mytable", null, cv);
                Log.d(LOG_TAG, "row inserted, ID = " + rowID);
                break;
            case R.id.btnRead:
                Log.d(LOG_TAG, "--- Rows in mytable: ---");
                // делаем запрос всех данных из таблицы mytable, получаем Cursor
                Cursor c = db.query("mytable", null, null, null, null, null, null);
 
                // ставим позицию курсора на первую строку выборки
                // если в выборке нет строк, вернется false
                if (c.moveToFirst()) {
 
                    // определяем номера столбцов по имени в выборке
                    int idColIndex = c.getColumnIndex("id");
                    int nameColIndex = c.getColumnIndex("name");
                    int familyColIndex = c.getColumnIndex("family");
                    int birthdayColIndex = c.getColumnIndex("birthday");
                    int gruppaColIndex = c.getColumnIndex("gruppa");
 
                    do {
                        // получаем значения по номерам столбцов и пишем все в лог
                        Log.d(LOG_TAG,
                                "ID = " + c.getInt(idColIndex) + ", name = "
                                        + c.getString(nameColIndex) + ", family = "
                                        + c.getString(familyColIndex) + ", birthday = "
                                        + c.getString(birthdayColIndex) + ", gruppa = "
                                        + c.getString(gruppaColIndex));
 
                        // переход на следующую строку
                        // а если следующей нет (текущая - последняя), то false -
                        // выходим из цикла
                    } while (c.moveToNext());
                } else
                    Log.d(LOG_TAG, "0 rows");
                c.close();
                break;
            case R.id.btnClear:
                Log.d(LOG_TAG, "--- Clear mytable: ---");
                // удаляем все записи
                int clearCount = db.delete("mytable", null, null);
                Log.d(LOG_TAG, "deleted rows count = " + clearCount);
                break;
            case R.id.btnUpd:
                if (id.equalsIgnoreCase("")) {
                    break;
                }
                Log.d(LOG_TAG, "--- Update mytabe: ---");
                // подготовим значения для обновления
                cv.put("name", name);
                cv.put("family", family);
                cv.put("birthday", birthday);
                cv.put("gruppa", gruppa);
                // обновляем по id
                int updCount = db.update("mytable", cv, "id = ?",
                        new String[] { id });
                Log.d(LOG_TAG, "updated rows count = " + updCount);
                break;
            case R.id.btnDel:
                if (id.equalsIgnoreCase("")) {
                    break;
                }
                Log.d(LOG_TAG, "--- Delete from mytabe: ---");
                // удаляем по id
                int delCount = db.delete("mytable", "id = " + id, null);
                Log.d(LOG_TAG, "deleted rows count = " + delCount);
                break;
        }
        // закрываем подключение к БД
        dbHelper.close();
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, DB_VERSION);
        }
 
        public void onCreate(SQLiteDatabase db) {
            Log.d(LOG_TAG, "--- onCreate database ---");
            // создаем таблицу с полями
            db.execSQL("create table mytable ("
                    + "id integer primary key autoincrement,"
                    + "name text,"
                    + "family text,"
                    + "birthday text,"
                    + "gruppa text"+ ")");
 
            db.execSQL("create table mygrupp ("
                    + "id integer primary key autoincrement,"
                    + "namegrupp text,"
                    + "namefak text"+ " )");
 
 
 
        }
 
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(DROP_TABLE);
            onCreate(db);
        }
    }
 
}


Что делаю не верно? И как связать 2 этих таблицы?
Пожалуйста помогите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2015, 18:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как подключаться к БД из разных активностей? Как создать 2 таблицы? (Программирование Android):

Как сделать общее системное меню для всех активностей?
в андроиде пока не сильно ориентируюсь. хочется сделть общее меню на все...

как создать таблицы
привет всем! в общем так: есть таблица в SQLite, ее нужно вывести в таблицу...

Как подключаться к различным типам БД (как правильно прописать драйвер для БД)?
Задача научить подключаться различным типам БД и в каких случих пишут имя...

Как связать таблицы БД С разных Форм
Построена структура через ACCESS Несколько окон, как сделать связку таблиц по...

Как связать таблицы с разных форм в Visual Studio?
Есть две связанные таблицы (картинка будет в документе). Личные данные ребёнка...

Как в одно поле таблицы вставить данные разных запросов
Нужно вывести в одно поле таблицы, данные из разных запросов. Есть таблица...

1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
30.04.2015, 09:39 #2
Надо создать отдельный класс и подключаться к нему из активностей, вот пример.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2015, 09:39
Привет! Вот еще темы с решениями:

Как управлять выборкой из разных таблиц зависимо от главной таблицы?
Есть Модели таблицы Category, Product, Ebook, Item (во вложении) .Можна как...

Как вычислять в поле таблицы используя данные из разных таблиц?
Народ, всем привет! Вопрос: Есть Таблица 1 в ней есть поле с датой . Есть...

Как создать 2 разных итератора ?
Вообщем есть задание,чтобы класс(содержащий коллекцию эл-ов) содержал 2...

Как организовать возможность редактировать 2-ве таблицы одной кнопкой, но на разных формах ?
Вопрос. У меня есть главная форма, на ней 2 таблицы и одна кнопка...


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

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

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