如何从android中的游标中检索数据?

mol*_*man 4 java database sqlite android cursor

我从我的数据库中检索信息,它全部在Cursor中.现在我需要浏览光标中的每个项目以检索lng lats和要在地图上显示的名称.

Cursor c = mDbHelper.fetchSpot(15);
        startManagingCursor(c);

        double lat = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LAT)));
        double lng = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LNG)));
        String name = c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_ADDRESS));
Run Code Online (Sandbox Code Playgroud)

我有一个名为fecthAllSpots()this的antoher方法返回游标中的许多项目,我如何从该游标中的每一行检索每个lng lat和name?

Flo*_*Flo 9

您可以使用while循环来迭代游标返回的所有行.

while(c.moveToNext()){
    double lat = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LAT)));
    double lng = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LNG)));
    String name = c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_ADDRESS));
}
Run Code Online (Sandbox Code Playgroud)

当然,您必须对lat,lng和name变量执行某些操作,因为它们将在每次迭代时被覆盖.我建议你实现一个DBLocation类,它可以存储一个位置的名称,经度和纬度.然后,您可以将从光标创建的所有对象存储在数组或列表中.


DAr*_*rkO 6

第一.您可以在游标上使用getInt,getLong等方法来检索值,而不是之后解析它们.

问题:

这是sintax:

首先查询db以获取游标.

接下来对光标进行空检查(以防万一因为它有时会发生),也可以使用try catch块.

下一个写:

    if(c.moveToFirst()){
do{
// YOUR CODE FOR EACH CURSOR ITEM HERE.
// the cursor moves one field at a time trhough it's whole dataset
}while(c.moveToNext())
}
Run Code Online (Sandbox Code Playgroud)

最后关闭光标或者如果它是托管查询,则不执行任何活动将为您关闭它.在一个块中重新记住所有这些,并且除了你要检查的其他内容之外,考虑游标的nullPointerException.