Ошибка Android sql при использовании SUM - PullRequest
4 голосов
/ 07 января 2012

Я столкнулся с проблемой, используя SQL-запрос с SUM в нем.Я отображаю дату и количество граммов в виде списка.Без СУММЫ она отображает точную дату и грамм, но не суммирует количество грамм, если есть несколько записей на одну дату.SQL-запрос работает, когда я тестирую его в браузере базы данных sqlite.Ниже приведен фрагмент моего кода для этого:

//attempt 1:
public Cursor getOverviewDate(){
    String[] columns = new String[]{ C_ID, C_DATE, "sum(" + C_GRAM + ")" };
    Cursor cursor = db.query(TABLE, columns,
      null, null, C_DATE, null, null);

    return cursor;
    }

Я также пытался использовать необработанный запрос:

//attempt 2:    
public Cursor getOverviewDate(){
        String test = "SELECT _id, date, SUM(gram) FROM nutvalues GROUP BY date;";
        Cursor cursor = db.rawQuery(test, null);
        return cursor;
    }

Как выводятся результаты запроса:

          mySQLiteAdapter = new CalorieCounterDbAdapter(this);
      mySQLiteAdapter.open();

      Cursor cursor = mySQLiteAdapter.getOverviewDate();
      startManagingCursor(cursor);

      final String[] columns = { CalorieCounterDbAdapter.C_DATE, CalorieCounterDbAdapter.C_GRAM};
      int[] to = new int[]{R.id.date, R.id.gram};

      SimpleCursorAdapter cursorAdapter =
       new SimpleCursorAdapter(this, R.layout.row, cursor, columns, to);

      listContent.setAdapter(cursorAdapter);

      mySQLiteAdapter.close();

Я думаю, что одна из ошибок, отображаемых в logcat, является ключом к решению:

 01-07 14:31:27.686: E/AndroidRuntime(10497):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at dalvik.system.NativeStart.main(Native Method)
01-07 14:31:27.686: E/AndroidRuntime(10497): Caused by: java.lang.IllegalArgumentException: column 'gram' does not exist
01-07 14:31:27.686: E/AndroidRuntime(10497):    at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:87)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at com.korsakopf.caloriecounter.CalorieCounterOverviewActivity.onCreate(CalorieCounterOverviewActivity.java:39)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-07 14:31:27.686: E/AndroidRuntime(10497):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

Я искал решение в течение 3 дней.Я абсолютный новичок в программировании / Android, так что это может быть просто ошибкой, но я не могу ее найти.

1 Ответ

2 голосов
/ 11 января 2012

Наконец-то я могу ответить на свой вопрос, но сначала не смог из-за ограничений:)

Похоже, мне удалось решить его.Я нашел его после того, как кто-то разместил ответ здесь, но по какой-то причине он удалил свой ответ, поэтому мои комментарии к комментариям также были удалены.Оказывается, мне нужно было изменить запрос на:

SELECT _id, date, sum(gram) as gram, FROM nutvalues GROUP BY date

Так было, потому что у меня не было части 'as gram'.

Спасибо за все ответы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...