我有一個數據庫創建並歸檔數據。有一列我想找到最大的價值。查詢SQLite中的列的最大值對於Android
這是我的數據庫適配器使用的方法:
public Cursor getBiggestInTheColumn() {
return db.query(DATABASE_TABLE, null,
"MAX(price)", null, null, null, null);
}
它應該工作,但是當我調用該方法:
cursor = dbadp.getBiggestInTheColumn();
我得到一個運行時錯誤是這樣的(logcat的):
07-14 12:38:51.852:ERROR/AndroidRuntime(276):導致:android.database.sqlite.SQLiteException:濫用聚合函數MAX():,wh ile編譯:選擇*從花費哪裏最大(價格)
任何想法?我懷疑這是由於糟糕的查詢,但這是我能想到的最好的。其他查詢運作良好。
我試過了'db.rawQuery(「SELECT MAX(price)FROM spendings」,null)',但它只是將錯誤更改爲:錯誤/ AndroidRuntime(335):引起:android.database.CursorIndexOutOfBoundsException:索引-1請求,大小爲1.雖然我覺得是正確的路要走。需要檢查rawQuery方法。 – ilcredo
當您嘗試使用光標獲取數據時,是否收到該異常?如果是這樣,這聽起來像你需要將光標放在第一行,然後才能從中獲取數據。要做到這一點,你可以調用:'mCursor.moveToFirst()'。此外,此方法調用返回一個布爾值,如果沒有結果,則該值爲false;所以你也可以用它來防範這種情況。 – stephendnicholas
這個評論在兩個小時的嘗試後解決了我的問題。在使用它之前將遊標移到第一個記錄。人們總是忘記這一點。 –