Страница 1 из 1

Вывод результата запроса в лог.(проблема)

Добавлено: 09 ноя 2013, 13:54
comradesaaxov
Привет всем, суть проблемы такова есть таблица my_table (id не пишу, так как пытаюсь освоить удаление\добавление строк поэтому привязываться к нему не вижу смысла )

id | CUP | FREE
- | 2 | 0
- | 0 | 4

с выводом всей таблицы проблем нет :

Код: Выделить всё

public void onClick(View v){
        switch (v.getId()){
            case R.id.button:
                Cursor c = sqdb.query("my_table",null,null,null,null,null,null);
                if (c.moveToFirst()){
                    int idColIndex = c.getColumnIndex("id");
                    int cupColIndex = c.getColumnIndex("cup");
                    int frenchColIndex = c.getColumnIndex("free");

                    do{
                        Log.d("LOG_TAG", "ID = " + c.getInt(idColIndex) + ", CUP =" + c.getInt(cupColIndex) + ", FREE =" + c.getInt(frenchColIndex)  );
                    } while (c.moveToNext());
                       }else
                    c.close();
                break;
тут все прекрасно, таблица выводится в логе, ура.
пытаюсь идти дальше и вывести суммы строк каждого столбца то есть значение CUP 2+0=2, FREE 0+4=4
и тут "прикра невдача спиткала радянських спортсменив"

Код: Выделить всё

case R.id.button1:
                String your_query= "SELECT sum(CUP) as cup, sum(FREE)as free FROM my_table ";
                Cursor result = sqdb.rawQuery(your_query, null);
                
                     if (result.moveToFirst()){
                    //int idColIndex = result.getColumnIndex("id");
                    int cupColIndex = result.getColumnIndex("cup");
                    int frenchColIndex = result.getColumnIndex("free");}

                    do{
                       Log.d("LOG_TAG", " CUP =" + result.getInt(cupColIndex) + ", FREE =" + result.getInt(frenchColIndex)  );
                    } while (result.moveToNext());
                }else
                    result.close();
                break;
собственно вот. обьясните плз что не так, и как вывести нужный результат.
спс

Re: Вывод результата запроса в лог.(проблема)

Добавлено: 09 ноя 2013, 14:27
trew
Цикл используют, чтобы вывесит в log несколько строк из таблицы. Как у тебя в первом случае.
Во втором случае цикл не нужен т.к. у тебя только одну строку возвращает запрос!

[syntax=java]case R.id.button1:
String your_query= "SELECT sum(CUP) as cup, sum(FREE)as free FROM my_table ";
Cursor result = sqdb.rawQuery(your_query, null);

//int idColIndex = result.getColumnIndex("id");
int cupColIndex = result.getColumnIndex("cup");
int frenchColIndex = result.getColumnIndex("free");

// result.moveToFirst(); -- кажется будет работать и без этой строки
Log.d("LOG_TAG", " CUP =" + result.getInt(cupColIndex) + ", FREE =" + result.getInt(frenchColIndex) );
result.close();
break; [/syntax]

Re: Вывод результата запроса в лог.(проблема)

Добавлено: 09 ноя 2013, 15:21
comradesaaxov
trew писал(а):Цикл используют, чтобы вывесит в log несколько строк из таблицы. Как у тебя в первом случае.
Во втором случае цикл не нужен т.к. у тебя только одну строку возвращает запрос!

[syntax=java]case R.id.button1:
String your_query= "SELECT sum(CUP) as cup, sum(FREE)as free FROM my_table ";
Cursor result = sqdb.rawQuery(your_query, null);

//int idColIndex = result.getColumnIndex("id");
int cupColIndex = result.getColumnIndex("cup");
int frenchColIndex = result.getColumnIndex("free");

// result.moveToFirst(); -- кажется будет работать и без этой строки
Log.d("LOG_TAG", " CUP =" + result.getInt(cupColIndex) + ", FREE =" + result.getInt(frenchColIndex) );
result.close();
break; [/syntax]
хм без result.moveToFirst(); получил:

[syntax=java]java.lang.IllegalStateException: Couldn't read row 0, col 2 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.[/syntax]

а с result.moveToFirst() все получилось! спс

Re: Вывод результата запроса в лог.(проблема)

Добавлено: 09 ноя 2013, 15:26
trew
Это и для меня опыт :)