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

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

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

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

29.04.2015, 18:46. Просмотров 377. Ответов 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):

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

как создать таблицы - Программирование Android
привет всем! в общем так: есть таблица в SQLite, ее нужно вывести в таблицу на экране телефона. а также при нажатии на кнопку добавлять...

Как подключаться к различным типам БД (как правильно прописать драйвер для БД)? - C++ Qt
Задача научить подключаться различным типам БД и в каких случих пишут имя соединения QSlDatabase db = QSqlDatabase::addDatabase (""); ...

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

MS SQL Как связать таблицы с разных форм в Visual Studio? - C#
Есть две связанные таблицы (картинка будет в документе). Личные данные ребёнка находятся на форме 2, посещения на форме 4. Связываются...

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

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

Как в одно поле таблицы вставить данные разных запросов - MS Access
Нужно вывести в одно поле таблицы, данные из разных запросов. Есть таблица "наим показ", есть запросы по каждому показателю, Как??? их...

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

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

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


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

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

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