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

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

Войти
Регистрация
Восстановить пароль
 
 
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
#1

Вывод данных в ListViev из БД - Android

24.05.2015, 04:07. Просмотров 834. Ответов 27
Метки нет (Все метки)

Доброго времени суток. Диплом близится а на данный момент всё плоховатенько, ой как плоховатенько.



Есть база данных, в ней 4 таблицы("man", "event_type", "meeting", "event"). в таблице "event" хранятся 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
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
//man
    private static final String DB_TABLE = "man";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "name";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_NAME + " text" +
                    ");";
 
    //event type
    private static final String EVENT_TYPE_TABLE = "event_type";
    public static final String EVENT_TYPE_COLUMN_ID = "_id";
    public static final String EVENT_TYPE_COLUMN_NAME = "name";
 
    private static final String EVENT_TYPE_DB_CREATE =
            "create table " + EVENT_TYPE_TABLE + "(" +
                    EVENT_TYPE_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_TYPE_COLUMN_NAME + " text" +
                    ");";
 
    //meeting
    private static final String MEETING_TABLE = "meeting";
    public static final String MEETING_COLUMN_ID = "_id";
    public static final String MEETING_COLUMN_NAME = "name";
 
    private static final String MEETING_DB_CREATE =
            "create table " + MEETING_TABLE + "(" +
                    MEETING_COLUMN_ID + " integer primary key autoincrement, " +
                    MEETING_COLUMN_NAME + " text" +
                    ");";
 
        //event
    private static final String EVENT_TABLE = "event";
    public static final String EVENT_COLUMN_ID = "_id";
    public static final String EVENT_COLUMN_MAN = "ManId";
    public static final String EVENT_COLUMN_MEETING = "MeetingId";
    public static final String EVENT_COLUMN_EVENT_TYPE = "EventTypeId";
    public static final String EVENT_COLUMN_VALUE = "Value";
 
    private static final String EVENT_DB_CREATE =
            "create table " + EVENT_TABLE + "(" +
                    EVENT_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_COLUMN_MAN + " integer, " +
                    EVENT_COLUMN_MEETING + " integer, " +
                    EVENT_COLUMN_EVENT_TYPE + " integer, " +
                    EVENT_COLUMN_VALUE + " integer" +
                    ");";
 
public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
            db.execSQL(EVENT_TYPE_DB_CREATE);
            db.execSQL(MEETING_DB_CREATE);
            db.execSQL(EVENT_DB_CREATE);
 
//            ContentValues cv = new ContentValues();
//            for (int i = 1; i < 5; i++) {
//                cv.put(COLUMN_NAME, "sometext " + i);
//                db.insert(DB_TABLE, null, cv);
//            }
        }
Добавлено через 2 минуты
Сам onCreate и ниже добавление данных и обновление списка. Как сделать правильный вывод, то есть не цифр из табл. "event", а строк из других таблиц, подцепляя их через айдишники?

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
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
 
        Log.v(TAG, "ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ" );
 
        // открываем подключение к БД
        db.open();
 
        Log.v(TAG, "ОК- ОТКРЫЛИ" );
 
        // РАСКРЫВАЮЩИЕСЯ СПИСОКИ
        edtMan = (Spinner) findViewById(R.id.ManSpinner);
        edtET = (Spinner) findViewById(R.id.ETSpinner);
        edtMeet = (Spinner) findViewById(R.id.MeetingSpinner);
 
        //СПИНЕРЫ MAN - EVENT TYPE - MEET
        CreatNewSpinnerFU("man", "name", edtMan);
        CreatNewSpinnerFU("event_type", "name", edtET);
        CreatNewSpinnerFU("meeting", "name", edtMeet);
 
        //список на экране
        Cursor curEv = db.getAllData("event");
        startManagingCursor(curEv);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
        int[] to = new int[] { R.id.tvText,
                               R.id.tvText1,
                               R.id.tvText2,
                               R.id.tvText3};
 
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item_ev, curEv, from, to, 0);
        lvDataEvent = (ListView) findViewById(R.id.lvDataEvent);
        lvDataEvent.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvDataEvent);
 
        checkboxEvent = (CheckBox) findViewById(R.id.checkBox);
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
btnEvent  = (Button) findViewById(R.id.new_event_in_tab);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Do something in response to button click
 
 
                boolean checkMan= false;
                boolean checkET = false;
                boolean checkMeet = false;
 
                Log.v(TAG, "ТЫК!" );
 
                //checkMan = !true; checkET = !true; checkMeet = !true;
 
                Log.v(TAG, "РАБОТАЕ СО СПИНЕРАМИ" );
                if (edtMan.getSelectedItem() != null)
                {
                    checkMan = true;
 
                    cur = db.GetCatalogValueByName("man", "_id", "name", edtMan.getSelectedItem().toString());
                    cManID = cur.getInt(cur.getColumnIndex("_id"));
                }
                if (edtET.getSelectedItem() != null)
                {
                    checkET = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "name", edtET.getSelectedItem().toString());
                    cETID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                }
                if (edtMeet.getSelectedItem() != null)
                {
                    checkMeet = true;
                    cur = db.GetCatalogValueByName("meeting", "_id", "name", edtMeet.getSelectedItem().toString());
                    cMeetID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
                }
 
                Log.v(TAG, "ПРОВЕРЯЕМ ФЛАГИ НА 'TRUE'. ИМЕЮТСЯ ЛИ ДАННЫЕ В СПИНЕРАХ " );
 
                //Если все значения true, то записываем данные в таблицу "event"
                if(checkMan && checkET && checkMeet){
 
//                    db.addRec("event", "ManId", cManID );
//                    db.addRec("event", "MeetingId", cMeetID );
//                    db.addRec("event", "EventTypeId", cETID );
//                    Log.v(TAG, "ОК" );
                    Log.v(TAG, "РАБОТА С ЧЕКБОКСИКА" );
                    if (checkboxEvent.isChecked()){
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 1 );
                        cChB = 1;
                        Log.v(TAG, "ОК---1" );
                    }else {
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 0 );
                        cChB = 0;
                        Log.v(TAG, "ОК---0" );
                    }
                    //Добавление данных в таблицу
                    db.addRecFour("event",
                            DB.EVENT_COLUMN_MAN, cManID,
                            DB.EVENT_COLUMN_MEETING, cMeetID,
                            DB.EVENT_COLUMN_EVENT_TYPE, cETID,
                            DB.EVENT_COLUMN_VALUE, cChB);
 
 
                    //cur.requery();
                    cur = db.getAllData("event");
                    scAdapter.changeCursor(cur);
                    scAdapter.notifyDataSetChanged();
                }
 
            }
        });
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 11:04     Вывод данных в ListViev из БД #2
Как я понял нужно просто правильный SQL-запрос сделать.
примерный синтаксис объединения с условием:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
имя_таблицы_1.имя_столбца1_таблицы_1, 
имя_таблицы_1.имя_столбца2_таблицы_1, 
имя_таблицы_2.имя_столбца1_таблицы_2, 
имя_таблицы_2.имя_столбца2_таблицы_2, 
имя_таблицы_3.имя_столбца1_таблицы_3, 
имя_таблицы_3.имя_столбца2_таблицы_3
FROM 
имя_таблицы_1, имя_таблицы_2, имя_таблицы_3
WHERE 
имя_таблицы_1.имя_столбца_по_которому_объединяем = имя_таблицы_2.имя_столбца_по_которому_объединяем
AND
имя_таблицы_1.имя_столбца_по_которому_объединяем = имя_таблицы_2.имя_столбца_по_которому_объединяем;
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 20:32  [ТС]     Вывод данных в ListViev из БД #3
Mikalai
Да, нужен верный запрос. Это нужно сделать через метод rawQuery? И прилепить(приплюсовать в конец обработки действия кнопки для обновление данных спинера) его в обработку кнопки добавления записи?

Добавлено через 2 минуты
Туго у меня с SQL-запросами, сей час что-нибудь попробую и отпишусь сюда.

Добавлено через 3 часа 56 минут
Mikalai, я так понимаю, что как-то так?
Java
1
2
3
4
5
6
private static final String GET_DATA_FROM_TABLES =
            "select event._id, man.name, meeting.name, event_type.name " +
                    "from meeting, man, event_type, event " +
                    "where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id " +
                    "and event.EventTypeId = event_type._id;";
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 20:42     Вывод данных в ListViev из БД #4
я бы вот так попробовал:
Java
1
2
3
private static final String GET_DATA_FROM_TABLES =
            "select _id, name, name, name from meeting, man, event_type, event where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id and event.EventTypeId = event_type._id";
но получается "name, name, name". Поменяй название у этих столбцов если есть возможность
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 20:44  [ТС]     Вывод данных в ListViev из БД #5
Mikalai, а с ними ничего не случиться? Просто нужно будет БД пересоздать?
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 21:06     Вывод данных в ListViev из БД #6
Пересоздай. если она пустая, то проблем нету
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 21:43  [ТС]     Вывод данных в ListViev из БД #7
Mikalai, Чем отличается мой вариант от твоего? В чём фишка?

Добавлено через 6 минут
Mikalai, вопрос. Мне же потом эти данные нужно в ListView передать, что бы эти данные отображались. Для этого мне нужно выбрать другие столбцы сопоставления?

Добавлено через 22 секунды
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 //список на экране
        Cursor curEv = db.getAllData("event");
        startManagingCursor(curEv);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
        int[] to = new int[] { R.id.tvText,
                               R.id.tvText1,
                               R.id.tvText2,
                               R.id.tvText3};
 
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item_ev, curEv, from, to, 0);
        lvDataEvent = (ListView) findViewById(R.id.lvDataEvent);
        lvDataEvent.setAdapter(scAdapter);
Добавлено через 34 секунды
getAllData выглядит так
Java
1
2
3
4
// получить все данные из таблицы
    public Cursor getAllData(String name_Tb) {
        return mDB.query(name_Tb, null, null, null, null, null, null);
    }
Добавлено через 41 секунду
Сей час выводятся просто цифры, а как заменить на строки? Другие столбцы сопоставления?
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 21:49     Вывод данных в ListViev из БД #8
В соседней ветке наверное твой отногрупник)) На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы
У вас код похожий ))
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 22:53  [ТС]     Вывод данных в ListViev из БД #9
Mikalai, вряд ли одногрупник, в своей группе я один на андроид попер. Спасибо, пошёл листать соседнюю ветку.

Добавлено через 25 минут
Mikalai, по сравнению с той темой, у меня выводятся данные, но мне нужно выводить другие, те раньше были просто как на тест.
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 23:06     Вывод данных в ListViev из БД #10
Заполни курсор(только реши проблему с "name, name, name"):
Java
1
2
3
4
5
6
7
private static final String GET_DATA_FROM_TABLES =
            "select _id, name, name, name from meeting, man, event_type, event where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id and event.EventTypeId = event_type._id";
 
//..........
 
cursor = db.rawQuery(GET_DATA_FROM_TABLES, null);
Ну а дальше прочитай про SimpleCursorAdapter.
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 23:25  [ТС]     Вывод данных в ListViev из БД #11
Mikalai, "name, name, name" я уже поменял.

Добавлено через 19 секунд
Спасибо, сей час попробую.

Добавлено через 17 минут
Mikalai, ругается на запрос.
Prolog
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
05-24 23:21:24.762  29936-29936/com.example.kirukato.coolstdreg E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kirukato.coolstdreg/com.example.kirukato.coolstdreg.EventActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
            at android.app.ActivityThread.access$600(ActivityThread.java:150)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.kirukato.coolstdreg.EventActivity.onCreate(EventActivity.java:71)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
************at android.app.ActivityThread.access$600(ActivityThread.java:150)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
************at android.os.Handler.dispatchMessage(Handler.java:99)
************at android.os.Looper.loop(Looper.java:213)
************at android.app.ActivityThread.main(ActivityThread.java:5225)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:525)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
************at dalvik.system.NativeStart.main(Native Method)
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
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
 
        Log.v(TAG, "ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ" );
 
        // открываем подключение к БД
        db.open();
 
        Log.v(TAG, "ОК- ОТКРЫЛИ" );
 
        // РАСКРЫВАЮЩИЕСЯ СПИСОКИ
        edtMan = (Spinner) findViewById(R.id.ManSpinner);
        edtET = (Spinner) findViewById(R.id.ETSpinner);
        edtMeet = (Spinner) findViewById(R.id.MeetingSpinner);
 
        //СПИНЕРЫ MAN - EVENT TYPE - MEET
        CreatNewSpinnerFU("man", "m_name", edtMan);
        CreatNewSpinnerFU("event_type", "et_name", edtET);
        CreatNewSpinnerFU("meeting", "meet_name", edtMeet);
 
        //список на экране
        //Cursor curEv = db.getAllData("event");
        //xyz
        Cursor curEv = mDB.rawQuery(GET_DATA_FROM_LIST, null);
        //XYZ
        startManagingCursor(curEv);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
        int[] to = new int[] { R.id.tvText,
                               R.id.tvText1,
                               R.id.tvText2,
                               R.id.tvText3};
 
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item_ev, curEv, from, to, 0);
        lvDataEvent = (ListView) findViewById(R.id.lvDataEvent);
        lvDataEvent.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvDataEvent);
Cursor curEv = mDB.rawQuery(GET_DATA_FROM_LIST, null); на неё ругается.

строка запроса:
Java
1
2
3
    private static final String GET_DATA_FROM_LIST =
            "select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id and event.EventTypeId = event_type._id";
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
24.05.2015, 23:31     Вывод данных в ListViev из БД #12
А mDB точно не нул? покажи весь класс полностью и особенно строку EventActivity.java:71 укажи
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
24.05.2015, 23:43  [ТС]     Вывод данных в ListViev из БД #13
EventActivity.java:71 - это
Cursor curEv = mDB.rawQuery(GET_DATA_FROM_LIST, null);


весь класс EventActivity.java
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
package com.example.kirukato.coolstdreg;
 
import android.app.Activity;
import android.app.LoaderManager;
import android.content.Loader;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
 
import java.util.ArrayList;
import java.util.List;
 
 
public class EventActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor> {
 
    private static final String TAG = "EVENT__ACTIVITY";
    private static final String GET_DATA_FROM_LIST =
            "select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id and event.EventTypeId = event_type._id";
 
    DB db = new DB(this);
    SimpleCursorAdapter scAdapter;
    private SQLiteDatabase mDB;
    Spinner edtMan, edtET, edtMeet;
 
    Cursor cur, LvCur;
    int cManID = 0, cMeetID = 0, cETID = 0, cChB=0;
 
    CheckBox checkboxEvent;
    Button btnEvent, btnLog;
 
    ListView lvDataEvent;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
 
        Log.v(TAG, "ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ" );
 
        // открываем подключение к БД
        db.open();
 
        Log.v(TAG, "ОК- ОТКРЫЛИ" );
 
        // РАСКРЫВАЮЩИЕСЯ СПИСОКИ
        edtMan = (Spinner) findViewById(R.id.ManSpinner);
        edtET = (Spinner) findViewById(R.id.ETSpinner);
        edtMeet = (Spinner) findViewById(R.id.MeetingSpinner);
 
        //СПИНЕРЫ MAN - EVENT TYPE - MEET
        CreatNewSpinnerFU("man", "m_name", edtMan);
        CreatNewSpinnerFU("event_type", "et_name", edtET);
        CreatNewSpinnerFU("meeting", "meet_name", edtMeet);
 
        //список на экране
        //Cursor curEv = db.getAllData("event");
        //xyz
        Cursor curEv = mDB.rawQuery(GET_DATA_FROM_LIST, null);
        //XYZ
        startManagingCursor(curEv);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
        int[] to = new int[] { R.id.tvText,
                               R.id.tvText1,
                               R.id.tvText2,
                               R.id.tvText3};
 
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item_ev, curEv, from, to, 0);
        lvDataEvent = (ListView) findViewById(R.id.lvDataEvent);
        lvDataEvent.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvDataEvent);
 
        checkboxEvent = (CheckBox) findViewById(R.id.checkBox);
 
        Log.v(TAG, "ЖДЁМ 'ТЫК' КНОПКИ" );
 
        btnLog  = (Button) findViewById(R.id.log_log_log);
        btnLog.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
 
                Log.d(TAG, "--- Rows in event: ---");
                // делаем запрос всех данных из таблицы , получаем Cursor
                //Cursor c = db.query("event", null, null, null, null, null, null);
                Cursor c = db.getDataForEvent("event");
 
                if (c.moveToFirst()) {
                    int idColID = 0;//c.getColumnIndex(DB.EVENT_COLUMN_ID);
                    int idColMAN = 1;//c.getColumnIndex(DB.COLUMN_NAME); - надо сделать уникальные имена таблиц, иначе метод не работает
                    int idColMEETING = 2;//c.getColumnIndex(DB.MEETING_COLUMN_NAME); - надо сделать уникальные имена таблиц, иначе метод не работает
 
                    int idColET = 3;//c.getColumnIndex(DB.EVENT_TYPE_COLUMN_NAME); - надо сделать уникальные имена таблиц, иначе метод не работает
 
 
                    //int idColVALUE = c.getColumnIndex(DB.EVENT_COLUMN_VALUE);
 
                    do {
                        // получаем значения по номерам столбцов и пишем все в лог
                        Log.d(TAG,
                                "ID = " + c.getInt(idColID) +
                                        ", MAN = " + c.getString(idColMAN) +
                                        ", MEETING = " + c.getString(idColMEETING) +
                                        ", EVENT TYPE = " + c.getString(idColET) +
                                        ", VALUE = " /*+ c.getInt(idColVALUE)*/);
                        // переход на следующую строку
                        // а если следующей нет (текущая - последняя), то false - выходим из цикла
                    } while (c.moveToNext());
                } else {
                    Log.d(TAG, "0 rows");
                }
            }
        });
 
 
//        btnLog.setOnClickListener(new View.OnClickListener() {
//            public void onClick(View v) {
//
//                Log.d(TAG, "--- Rows in event: ---");
//                // делаем запрос всех данных из таблицы , получаем Cursor
//                //Cursor c = db.query("event", null, null, null, null, null, null);
//                Cursor c = db.getAllData("event");
//
//                if (c.moveToFirst()) {
//                    int idColID = c.getColumnIndex(DB.EVENT_COLUMN_ID);
//                    int idColMAN = c.getColumnIndex(DB.EVENT_COLUMN_MAN);
//                    int idColMEETING = c.getColumnIndex(DB.EVENT_COLUMN_MEETING);
//                    int idColET = c.getColumnIndex(DB.EVENT_COLUMN_EVENT_TYPE);
//                    int idColVALUE = c.getColumnIndex(DB.EVENT_COLUMN_VALUE);
//
//                    do {
//                        // получаем значения по номерам столбцов и пишем все в лог
//                        Log.d(TAG,
//                                "ID = " + c.getInt(idColID) +
//                                        ", MAN = " + c.getInt(idColMAN) +
//                                        ", MEETING = " + c.getInt(idColMEETING) +
//                                        ", EVENT TYPE = " + c.getInt(idColET) +
//                                        ", VALUE = " + c.getInt(idColVALUE));
//                        // переход на следующую строку
//                        // а если следующей нет (текущая - последняя), то false - выходим из цикла
//                    } while (c.moveToNext());
//                } else {
//                    Log.d(TAG, "0 rows");
//                }
//                    }
//
//
//
//
//        });
 
        btnEvent  = (Button) findViewById(R.id.new_event_in_tab);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Do something in response to button click
 
 
                boolean checkMan= false;
                boolean checkET = false;
                boolean checkMeet = false;
 
                Log.v(TAG, "ТЫК!" );
 
                //checkMan = !true; checkET = !true; checkMeet = !true;
 
                Log.v(TAG, "РАБОТАЕ СО СПИНЕРАМИ" );
                if (edtMan.getSelectedItem() != null)
                {
                    checkMan = true;
 
                    cur = db.GetCatalogValueByName("man", "_id", "m_name", edtMan.getSelectedItem().toString());
                    cManID = cur.getInt(cur.getColumnIndex("_id"));
                }
                if (edtET.getSelectedItem() != null)
                {
                    checkET = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "et_name", edtET.getSelectedItem().toString());
                    cETID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                }
                if (edtMeet.getSelectedItem() != null)
                {
                    checkMeet = true;
                    cur = db.GetCatalogValueByName("meeting", "_id", "meet_name", edtMeet.getSelectedItem().toString());
                    cMeetID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
                }
 
                Log.v(TAG, "ПРОВЕРЯЕМ ФЛАГИ НА 'TRUE'. ИМЕЮТСЯ ЛИ ДАННЫЕ В СПИНЕРАХ " );
 
                //Если все значения true, то записываем данные в таблицу "event"
                if(checkMan && checkET && checkMeet){
 
//                    db.addRec("event", "ManId", cManID );
//                    db.addRec("event", "MeetingId", cMeetID );
//                    db.addRec("event", "EventTypeId", cETID );
//                    Log.v(TAG, "ОК" );
                    Log.v(TAG, "РАБОТА С ЧЕКБОКСИКА" );
                    if (checkboxEvent.isChecked()){
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 1 );
                        cChB = 1;
                        Log.v(TAG, "ОК---1" );
                    }else {
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 0 );
                        cChB = 0;
                        Log.v(TAG, "ОК---0" );
                    }
                    //Добавление данных в таблицу
                    db.addRecFour("event",
                            DB.EVENT_COLUMN_MAN, cManID,
                            DB.EVENT_COLUMN_MEETING, cMeetID,
                            DB.EVENT_COLUMN_EVENT_TYPE, cETID,
                            DB.EVENT_COLUMN_VALUE, cChB);
 
 
                    //cur.requery();
                    //xyz
                    //cur = db.getAllData("event");
 
                    cur = mDB.rawQuery(GET_DATA_FROM_LIST, null);
                    //XYZ
 
                    //cur = db.rawQuery();
 
 
                    scAdapter.changeCursor(cur);
                    scAdapter.notifyDataSetChanged();
                }
 
            }
        });
 
 
 
 
 
    }// КОНЕЦ onCreate
 
//    public void onPause()
//    {
//        super.onPause();
//        Log.d("on pause", " / ");
//        db.close();
//    }
 
    protected void onResume() {
        super.onResume();
        db.open();
        Log.d(TAG, "EventActivity: onResume()");
    }
 
    //СОЗДАНИЕ SPINNER
    public void CreatNewSpinnerFU(String name_table, String name_column, Spinner qwerty) {
        List ListArray = new ArrayList();
        Cursor Post = db.GetCatalogByName(name_table);
        Post.moveToFirst();
 
        if (Post != null && Post.getCount() > 0) {
            do {
                ListArray.add(Post.getString(Post.getColumnIndex(name_column)));
            } while (Post.moveToNext());
 
            ArrayAdapter dataAdapterPost = new ArrayAdapter(this, android.R.layout.simple_spinner_item, ListArray);
            dataAdapterPost.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            qwerty.setAdapter(dataAdapterPost);
        }
        Post.close();
    }
 
    // обработка нажатия кнопки
//    public void onButtonClick(View view) {
//        String name = etName.getText().toString();
//        // добавляем запись
//        db.addRec("man", DB.COLUMN_NAME, name );
//        // обновляем курсор
//        cursor.requery();
//    }
 
    public void onItemSelected(AdapterView<?> parent, View view,
                               int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }
 
 
        @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_event, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return null;
    }
 
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
 
    }
 
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
 
    }
}
Добавлено через 1 минуту
прошу прощения за мой "быдлокод".
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
25.05.2015, 00:00     Вывод данных в ListViev из БД #14
Как я и говорил у тебя mDB = null
по идеи твой класс DB должен расширять класс SQLiteOpenHelper
тогда нужно дописать mDB = db.getWritableDatabase();
если не заработает скинь код класса DB.java
И не забывай освобождать ресурсы - db.close(); - у тебя ща эти строки закоментированы
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
25.05.2015, 00:04  [ТС]     Вывод данных в ListViev из БД #15
Mikalai, вопрос, куда "mDB = db.getWritableDatabase();" дописать?
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
25.05.2015, 00:07     Вывод данных в ListViev из БД #16
в тот же метод где ругается. выше строки на которую ругается))
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
25.05.2015, 00:14  [ТС]     Вывод данных в ListViev из БД #17
Он вообще не понимает что такое getWritableDatabase(), то есть ругается и красным светит.


Весь класс DB.java
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package com.example.kirukato.coolstdreg;
 
/**
 * Created by Kirukato
 */
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
public class DB {
 
    private static final String TAG = "DB__ACTIVITY";
 
 
    private static final String DB_NAME = "Allreg";
    private static final int DB_VERSION = 2;
 
    private static final String GET_DATA_FROM_TABLES =
            "select event._id, man.m_name, meeting.meet_name, event_type.et_name " +
                    "from meeting, man, event_type, event " +
                    "where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id " +
                    "and event.EventTypeId = event_type._id;";
 
    //man
    private static final String DB_TABLE = "man";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "m_name";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_NAME + " text" +
                    ");";
 
    //event type
    private static final String EVENT_TYPE_TABLE = "event_type";
    public static final String EVENT_TYPE_COLUMN_ID = "_id";
    public static final String EVENT_TYPE_COLUMN_NAME = "et_name";
 
    private static final String EVENT_TYPE_DB_CREATE =
            "create table " + EVENT_TYPE_TABLE + "(" +
                    EVENT_TYPE_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_TYPE_COLUMN_NAME + " text" +
                    ");";
 
    //meeting
    private static final String MEETING_TABLE = "meeting";
    public static final String MEETING_COLUMN_ID = "_id";
    public static final String MEETING_COLUMN_NAME = "meet_name";
 
    private static final String MEETING_DB_CREATE =
            "create table " + MEETING_TABLE + "(" +
                    MEETING_COLUMN_ID + " integer primary key autoincrement, " +
                    MEETING_COLUMN_NAME + " text" +
                    ");";
 
        //event
    private static final String EVENT_TABLE = "event";
    public static final String EVENT_COLUMN_ID = "_id";
    public static final String EVENT_COLUMN_MAN = "ManId";
    public static final String EVENT_COLUMN_MEETING = "MeetingId";
    public static final String EVENT_COLUMN_EVENT_TYPE = "EventTypeId";
    public static final String EVENT_COLUMN_VALUE = "Value";
 
    private static final String EVENT_DB_CREATE =
            "create table " + EVENT_TABLE + "(" +
                    EVENT_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_COLUMN_MAN + " integer, " +
                    EVENT_COLUMN_MEETING + " integer, " +
                    EVENT_COLUMN_EVENT_TYPE + " integer, " +
                    EVENT_COLUMN_VALUE + " integer" +
                    ");";
 
 
 
    private final Context mCtx;
 
 
    private DBHelper mDBHelper;
    private SQLiteDatabase mDB;
 
    public DB(Context ctx) {
        mCtx = ctx;
    }
 
    // открыть подключение
    public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
    }
 
    // закрыть подключение
    public void close() {
        if (mDBHelper!=null) mDBHelper.close();
    }
 
 
 
    // получить все данные из таблицы
    public Cursor getAllData(String name_Tb) {
        return mDB.query(name_Tb, null, null, null, null, null, null);
    }
 
 
    //данные для 4 таблицы(евент)
    public Cursor getDataForEvent(String name_Tb) {
 
        Cursor newCur = mDB.rawQuery(GET_DATA_FROM_TABLES, null);
 
        return newCur;
    }
 
 
 
    // добавить запись в TABLE
    public void addRec(String name_table, String name_column, String txt) {
        ContentValues cv = new ContentValues();
        cv.put(name_column, txt);
        mDB.insert(name_table, null, cv);
    }
    //Перегружение функции(для int)
    public void addRec(String name_table, String name_column, int txt) {
        ContentValues cv = new ContentValues();
        cv.put(name_column, txt);
        mDB.insert(name_table, null, cv);
    }
 
    public void addRecFour(String name_table,
                           String name_column1, int txt1,
                           String name_column2, int txt2,
                           String name_column3, int txt3,
                           String name_column4, int txt4) {
 
        ContentValues cv = new ContentValues();
 
        cv.put(name_column1, txt1);
        cv.put(name_column2, txt2);
        cv.put(name_column3, txt3);
        cv.put(name_column4, txt4);
 
        mDB.insert(name_table, null, cv);
 
    }
 
 
 
//    public void addRec(String txt) {
//        ContentValues cv = new ContentValues();
//        cv.put(COLUMN_NAME, txt);
//        mDB.insert(DB_TABLE, null, cv);
//    }
 
    // удалить запись из DB_TABLE
    //-----------------------------------поправить работу с _id
    public void delRec(String name_DB , String column_id , long id) {
        mDB.delete(name_DB, column_id + " = " + id, null);
    }
 
    // ФУНКЦИЯ РАБОТЫ С БД
    // ПОЛУЧЕНИЕ СПРАВОЧНИКА ПО ИМЕНИ
    public Cursor GetCatalogByName(String FullName)
    {
        Cursor cur = mDB.rawQuery("select * from " + FullName.toString() , null);
        cur.moveToFirst();
        return cur;
    }
 
    // ПОЛУЧЕНИЕ ПОЛЯ В СПРАВОЧНИКЕ ПО ИМЕНИ ПОЛЯ И СПРАВОЧНИКА
    public Cursor GetCatalogValueByName(String CatalogFullName,
                                        String FieldFullName,
                                        String ConditionField,
                                        String Value)
    {
        //Open();
 
        Log.v(TAG, "----МЫ В GetCatalogValueByName----");
 
        Log.v(TAG,"---ПРОСМОТР ПОСТУПАЮЩИХ ДАННЫХ." + " select " + FieldFullName + " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'" );
 
        Cursor cur = mDB.rawQuery(" select " + FieldFullName +
                " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'"
                , null);
 
        Log.v(TAG, " select " + FieldFullName +
                " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'");
 
        cur.moveToFirst();
        //Close();
 
        Log.v(TAG, cur.getCount() + "");
 
        return cur;
    }
 
 
 
    // класс по созданию и управлению БД
    private class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context, String name, CursorFactory factory,
                        int version) {
            super(context, name, factory, version);
        }
 
        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
            db.execSQL(EVENT_TYPE_DB_CREATE);
            db.execSQL(MEETING_DB_CREATE);
            db.execSQL(EVENT_DB_CREATE);
 
//            ContentValues cv = new ContentValues();
//            for (int i = 1; i < 5; i++) {
//                cv.put(COLUMN_NAME, "sometext " + i);
//                db.insert(DB_TABLE, null, cv);
//            }
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(EVENT_DB_CREATE);
 
        }
    }
}
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
25.05.2015, 00:30     Вывод данных в ListViev из БД #18
вот эту строку
Java
1
Cursor curEv = mDB.rawQuery(GET_DATA_FROM_LIST, null);
замени на
Java
1
Cursor curEv = db.getAllData();
В кдасс DB.java добавь метод

Java
1
2
3
public Cursor getAllData() {
        return mDB.rawQuery(GET_DATA_FROM_LIST, null);
    }
и туда же перенеси строчку с запросом

Java
1
2
3
private static final String GET_DATA_FROM_LIST =
 "select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id " +
                    "and event.MeetingId = meeting._id and event.EventTypeId = event_type._id";
Naomis
5 / 5 / 1
Регистрация: 11.03.2015
Сообщений: 196
Завершенные тесты: 1
25.05.2015, 00:52  [ТС]     Вывод данных в ListViev из БД #19
Сей час попробую.

Добавлено через 6 минут
Написал такой метод, то же самое, только в профиль, так как тот используется в других классах(активитях).
Java
1
2
3
public Cursor getAllDataForEvent() {
        return mDB.rawQuery(GET_DATA_FROM_LIST, null);
    }
заменил на:
Java
1
Cursor curEv = db.getAllDataForEvent();
Добавлено через 1 минуту
Программа вылетает.
лог:
Prolog
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
05-25 00:47:15.641  25505-25505/com.example.kirukato.coolstdreg E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kirukato.coolstdreg/com.example.kirukato.coolstdreg.EventActivity}: android.database.sqlite.SQLiteException: ambiguous column name: _id (code 1): , while compiling: select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id and event.MeetingId = meeting._id and event.EventTypeId = event_type._id
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
            at android.app.ActivityThread.access$600(ActivityThread.java:150)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.database.sqlite.SQLiteException: ambiguous column name: _id (code 1): , while compiling: select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id and event.MeetingId = meeting._id and event.EventTypeId = event_type._id
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
            at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
            at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
            at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1322)
            at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1261)
            at com.example.kirukato.coolstdreg.DB.getAllDataForEvent(DB.java:116)
            at com.example.kirukato.coolstdreg.EventActivity.onCreate(EventActivity.java:68)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
************at android.app.ActivityThread.access$600(ActivityThread.java:150)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
************at android.os.Handler.dispatchMessage(Handler.java:99)
************at android.os.Looper.loop(Looper.java:213)
************at android.app.ActivityThread.main(ActivityThread.java:5225)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:525)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
************at dalvik.system.NativeStart.main(Native Method)
Добавлено через 36 секунд
Ругается как раз на
Java
1
2
3
4
    // получить данные таблицы event
    public Cursor getAllDataForEvent() {
        return mDB.rawQuery(GET_DATA_FROM_LIST, null);
    }
И на
Java
1
        Cursor curEv = db.getAllDataForEvent();
Добавлено через 14 секунд
Prolog
1
2
            at com.example.kirukato.coolstdreg.DB.getAllDataForEvent(DB.java:116)
            at com.example.kirukato.coolstdreg.EventActivity.onCreate(EventActivity.java:68)
Добавлено через 56 секунд
Я подозреваю, что что-то не так именно с запросом, но я совсем в SQL не силён, так что...

Добавлено через 1 минуту
Что-то действительно не так с запросом так как...
Prolog
1
2
05-25 00:47:15.641  25505-25505/com.example.kirukato.coolstdreg E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kirukato.coolstdreg/com.example.kirukato.coolstdreg.EventActivity}: android.database.sqlite.SQLiteException: ambiguous column name: _id (code 1): , while compiling: select _id, m_name, et_name, meet_name from meeting, man, event_type, event where event.ManId = man._id and event.MeetingId = meeting._id and event.EventTypeId = event_type._id
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2015, 01:13     Вывод данных в ListViev из БД
Еще ссылки по теме:

Android - Вывод данных из базы данных Android
Android SQLite and ListView. Ввод и вывод данных
Вывод из базы данных в ListView через SimpleCursorAdapter Android
Ввод исходных данных и вывод результата расчета Android
Вывод данных полученных через Bluetooth на экран Android

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

Или воспользуйтесь поиском по форуму:
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
25.05.2015, 01:13     Вывод данных в ListViev из БД #20
Проверь ещё раз правильно ли написаны названия таблиц и колонок

Java
1
2
3
4
private static final String GET_DATA_FROM_LIST =
            "SELECT * FROM meeting, man, event_type, event " +
            "WHERE event.ManId = man._id AND event.MeetingId = meeting._id AND " +
            "event.EventTypeId = event_type._id";
"*" означает выбрать все колонки

Добавлено через 5 минут
Посмотри там где у тебя таблицы создаются
Вот это не нужно делать
Java
1
db.execSQL(DB_CREATE);
+ у тебя не хватает таблицы

Хотя вроде нормально там всё. Уже не видят глаза ))) Я пошёл спать. у меня тут уже час ночи. Удачи с кодом
Yandex
Объявления
25.05.2015, 01:13     Вывод данных в ListViev из БД
Ответ Создать тему
Опции темы

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