我试图在我的sqlite数据库中找到一列的平均值。
这是代码:

public void getAvgMileage(Prediction pd)
    {

    String [] columns = new String[]{KEY_ROW_ID, KEY_KM, KEY_FUEL_QTY, KEY_FUEL_PRICE, KEY_TOTAL_COST, KEY_MILEAGE, KEY_DATE,KEY_TANK_FULL};
    predictionCursor = ourDatabase.rawQuery("SELECT AVG(_mileage) FROM fuel_table WHERE _mileage IS NOT NULL ORDER BY _id DESC LIMIT 5", null);
                predictionCursor.moveToFirst();
                if(predictionCursor!=null && predictionCursor.getCount()>0)
                {
                    predictionCursor.moveToLast();
                   findAvgMileage = (Double.valueOf(predictionCursor.toString()));
                    pd.setpredictionMileage(findAvgMileage);
                }
}


但是我得到一个NullPointerException。
有帮助吗?
谢谢。

最佳答案

看起来您没有从SQL记录集的游标中获取值

这行:

findAvgMileage = (Double.valueOf(predictionCursor.toString()));


看起来它正在尝试获取实际光标的tostring()的双精度值-我认为这不会对Double有用或至少不可解析。 Cursor.toString()的返回值很可能为空值。

用以下内容替换该行:

findAvgMileage = predictionCursor.getDouble(0);


这行新内容将提取curosr当前位置的第一列中的值,该值在您的SQL中应为所需的平均值。

10-05 18:02