Arraylist无法正常使用游标查询

时间:2016-04-11 09:30:51

标签: java sqlite arraylist

我有一个光标,它返回下面我的数据库查询中的5个最新结果。

    public Cursor totaldistance(){
    String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.DSNM, DatabaseHelper.SDATE };
    Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, DatabaseHelper._ID + " DESC limit 5");
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}

然后我将返回的光标值分配给下面的arraylist。它工作正常接受arrayList缺少最新的db记录值。例如,我可以在DB中有4个值,但是第二个最近的值被分配到arraylist中的位置0。我不确定我的游标查询或while语句是否是问题。有人知道吗?谢谢!

        List<String> distancearray = new ArrayList<String>();
    distancearray.add("0");
    distancearray.add("0");
    distancearray.add("0");
    distancearray.add("0");
    distancearray.add("0");
    int i = 0;

    while(DistanceArray.moveToNext()){
        String uname = DistanceArray.getString(DistanceArray.getColumnIndex("distance"));

        distancearray.set(i, uname);
        i++;
    }

根据以下建议,我更新了我的代码。它现在从数据库中检索第一个结果,但它没有循环到下一个4.运行下面的代码后我的arraylist应该读取10,8,6,1,0但实际结果是10,10,10,10 ,0。它正在重复第一个检索到的值。如何在操作时修复do以将正确的结果写入数组?谢谢!

        List<String> distancearray = new ArrayList<String>();
    distancearray.add(0, "0");
    distancearray.add(1, "0");
    distancearray.add(2, "0");
    distancearray.add(3, "0");
    distancearray.add(4, "0");
    Cursor cursor =  dbManager.totaldistance();
    do{
        String uname = DistanceArray.getString(DistanceArray.getColumnIndex("distance"));
        distancearray.set(i, uname);
        Log.i("Graph", "Value i = " + i);
        Log.i("Graph", "Array value = " + uname);
        i++;
    }while ((cursor.moveToNext()));

0 个答案:

没有答案