2012-01-07 7 views
4

SUMを含むSQLクエリを使用して問題が発生しました。リストビューに日付とグラムの量を表示しています。 SUMがなければ、日付とグラムの罰金が表示されますが、1つの日付に対して複数のエントリがある場合はグラムの量が加算されません。 SQLクエリは、私がsqliteデータベースブラウザでテストするときに機能します。私はエラーのいずれかが表示さだと思いSUMを使用した場合のAndroid sqlエラー

  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(); 

//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; 
    } 

クエリ結果を出力取得する方法:

//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; 
    } 

アイブ氏はまた、rawqueryで試してみました。以下は、このための私のコードのいくつかはあります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日間ソリューションを探しています。私はプログラミング/アンドロイドの絶対初心者ですので、それはちょうどnoobyのミスかもしれませんが、私はそれを見つけることができないようです。

+0

最初に、「グラム」列が存在しないことを示します。 'CalorieCounterDbAdapter.C_GRAM ==" gram "'ですか? – tidbeck

+0

テーブルに「グラム」列がありますか? – kosa

+1

私はそれを解決することができたように見えます。私は誰かが答えを投稿した後にそれを見つけましたが、何らかの理由で彼が彼の答えを取り除いたので、私の返信のコメントも削除されました。 は、私は、クエリに変更する必要が判明:date' BY nutvaluesグループから、 は '_id、日付、グラムとして合計(グラム)を選択するので、私は持っていなかったので、それがあった「グラムとして」の部分を持っていますその中に。 すべての返信のためのThx! – user1135968

答えて

2

最終的に私は自分の質問に答えることができ、私は最初のための制約のでcouldntの:)私はそれを解決するために、管理のような

が見えます。私は誰かが答えを投稿した後にそれを見つけましたが、何らかの理由で彼が彼の答えを取り除いたので、私の返信のコメントも削除されました。私はそれに「as gram」の部分を持っていなかったので、だから、それがあった

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

:私は、クエリを変更する必要が判明。

すべての返信はThxです!

+1

あなたができるときは、あなたの答えを「受け入れられた」とマークして、他の人があなたの成功から学ぶことができるようにしてください。 –

関連する問題