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

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

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

Вывод данных в ListViev из БД - Программирование Android

24.05.2015, 04:07. Просмотров 964. Ответов 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();
                }
 
            }
        });
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2015, 04:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод данных в ListViev из БД (Программирование Android):

ListView в ListViev, приложение вылетает - Программирование Android
мне нужно поместить один ListView в строку другого, вот код: ListView list = (ListView)findViewById(R.id.listView1); ...

Вывод данных из базы данных SQLite - Программирование Android
Здравствуйте уважаемые форумчане! Делаю программу для работы с базой данных SQLite. Смысл простой: есть одна база, в ней 9 таблиц, от 2 до...

Android - Вывод данных из базы данных - Программирование Android
Всем здравствуйте! Задача не сложная, надо просто знать:-[ Нужно вывести данные из БД SQLite в таблицу. Не надо их ни добавлять, ни...

Где находится ListViev - C++ Builder
в какой группе находится ListViev в борланд 6?

добавление в ListViev строк с таймерами обратного отчёта - C# WPF
Ест приложение. Нужно из ListBox мышкой выбираем строку к примеру &quot;№ 5&quot; нажимаем на кнопку, обработчик добавляет в ListView строку &quot;№5&quot; и...

Как в элементе ListViev строки выделить разным цветом - Visual Basic
Может кто-нить знает как в элементе ListViev строки выделить разным цветом. Или цветом шрифта. Очень надо. Заранее спасибо.

27
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 00:07 #16
в тот же метод где ругается. выше строки на которую ругается))
0
Naomis
6 / 6 / 1
Регистрация: 11.03.2015
Сообщений: 210
Завершенные тесты: 1
25.05.2015, 00:14  [ТС] #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);
 
        }
    }
}
0
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 00:30 #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";
0
Naomis
6 / 6 / 1
Регистрация: 11.03.2015
Сообщений: 210
Завершенные тесты: 1
25.05.2015, 00:52  [ТС] #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
0
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 01:13 #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);
+ у тебя не хватает таблицы

Хотя вроде нормально там всё. Уже не видят глаза ))) Я пошёл спать. у меня тут уже час ночи. Удачи с кодом
0
Naomis
6 / 6 / 1
Регистрация: 11.03.2015
Сообщений: 210
Завершенные тесты: 1
25.05.2015, 01:41  [ТС] #21
Стоп, а как иначе создавать таблицы? Вот как там у меня.
Java
1
2
3
4
5
6
7
        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);
 
       }
Добавлено через 1 минуту
У меня там все 4 таблицы, просто у первой, которая "man" название дурацкое "DB_CREATE"

Добавлено через 8 минут
заработало, не вылетает. Хорошо. Но проблема та же. Картинка

на месте этих цифорок, нужны строки, что видны в спинерах.

Добавлено через 11 минут
Mikalai, спасибо тебе большое. Спокойной ночи.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
25.05.2015, 07:15 #22
SQL
1
"SELECT * FROM meeting, man, event_type, event "
Ктож так таблицы смотрит, JOIN нужен.
0
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 11:08 #23
Naomis, показывает циферки потому что не правильно заполняешь массив from
вот так у тебя:

Java
1
2
3
4
String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
А нужно примерно так:

Java
1
2
3
4
String[] from = new String[] { DB.MEETING_COLUMN_NAME,
                                       DB.COLUMN_NAME,
                                       DB.EVENT_TYPE_COLUMN_NAME,
                                       DB.EVENT_COLUMN_VALUE};
Rube, ну так джоин же описан дальше. Это же не вся строка.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
25.05.2015, 11:17 #24
Цитата Сообщение от Mikalai Посмотреть сообщение
ну так джоин же описан дальше
Что значит описан? Если нужно выбрать из других таблиц имена по их id, то и связывать таблицы нужно в запросе, т.е.
SQL
1
SELECT t2.name FROM t1 JOIN t2 ON t1.id = t2.id
0
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 11:33 #25
Rube, может и так. Но вот для примера 100% рабочий запрос без джоина, из 4х таблиц выводит информацию:
Java
1
2
3
4
5
String sqlQuery = "SELECT value, currency, currency_id, date, type, kind_credit, kind_debit " +
                "FROM table_currency, table_budget, table_kind_credit, table_kind_debit " +
                "WHERE table_budget.currency_id = table_currency._id AND " +
                "table_budget.kind_credit_id = table_kind_credit._id AND " +
                "table_budget.kind_debit_id = table_kind_debit._id ORDER BY date";
сам писал когда-то. всё работает как нужно.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
25.05.2015, 14:00 #26
Цитата Сообщение от Mikalai Посмотреть сообщение
всё работает как нужно
В таком запросе могут быть подводные камни в виде отсутствия в одной таблице сравниваемого значения имхо, да и бд на то она и бд, чтобы использовать ее правильно.
0
Naomis
6 / 6 / 1
Регистрация: 11.03.2015
Сообщений: 210
Завершенные тесты: 1
25.05.2015, 17:47  [ТС] #27
Mikalai, Mikalai, то есть такой SQL-запрос не подходит? Нужно что-то поменять?
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";
Всё поправил. Сей час работает вроде всё как нужно, но один момент(картинка). но там остались цифры, фишка в том, что они там так и записаны, так как это данные от чекбоксика. Есть возможность заменить 0\1 на "свершилось" или что-то в этом роде?
0
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
25.05.2015, 18:23 #28
Naomis, SQL-запрос рабочий, по крайней мере. Заметить циферки словами можно, например, сделав свой адаптер расширяющий SimpleCursorAdapter

Rube, написал приложение для проверки упадёт ли оно если будут не совпадения в 2х таблицах. Не упало. Просто строки с не совпадающими значениями не выводятся как и при использовании джоина.
0
25.05.2015, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2015, 18:23
Привет! Вот еще темы с ответами:

ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). - C++
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

Реализовать ввод данных, вывод данных, поиск по номеру квартиры и возрасту - Turbo Pascal
ввод данных, вывод данных, поиск по номеру квартиры и возрасту. Запись состоит из номера квартиры (тип integer), фамилии (тип string),...

Как установить LCID. Вывод данных из баз данных в динамические страницы - C# ASP.NET
Я хостюсь на зарубежном хостинге. И отсюда все проблемы (но есть и свои плюсы). У меня есть база SQL Server 2000. При динамическом...

Запрос к базе данных через форму и вывод данных на страничке - PHP БД
Всем привет. Очень нужна ваша помощь, вы моя последняя надежда. У меня стоит одна форма и ввожу имя человека который проходит тест, потом...


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

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

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