我遇到了一個問題,在其中使用了SUM查詢。我在列表視圖中顯示日期和數量的克。如果沒有SUM,它會顯示日期和克罰款,但是如果一個日期有多個條目,它不會累加克數。 SQL查詢在我在sqlite數據庫瀏覽器中測試時工作。下面是我的一些此代碼:使用SUM時出現Android sql錯誤
//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試圖
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的絕對初學者,所以它可能只是一個nooby錯誤,但我似乎無法找到它。
首先說列'克'不存在。 CalorieCounterDbAdapter.C_GRAM ==「gram」'? – tidbeck 2012-01-07 15:23:48
你的桌子有'克'列嗎? – kosa 2012-01-07 15:43:34
看起來我設法解決它。在有人在這裏發佈了答案後,我發現它,但由於某種原因,他刪除了他的答案,因此我的答覆評論也被刪除了。 原來我需要改變查詢: '選擇_id,日期,金額(克)爲克,來自nutvalues GROUP BY date' 所以這是因爲我沒有有「革蘭氏」的一部分在裏面。 Thx所有回覆! – user1135968 2012-01-07 15:51:35