将SQLite游标中的值赋给变量

时间:2013-07-20 13:51:30

标签: android sqlite

我试图在我的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。 任何帮助? 谢谢。

1 个答案:

答案 0 :(得分:0)

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

这一行:

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

看起来它正在尝试获取实际游标的tostring()的double值 - 我认为它不可用或至少不能解析为Double。返回Cursor.toString()可能是一个空值。

用以下内容替换该行:

findAvgMileage = predictionCursor.getDouble(0);

这一新行将获取curosr当前位置第一列中的值,该值在SQL中应该是您想要的平均值。