如何查询多行

how to query multiple rows

我有 sqlite table有五列(rownum、nodeid、lat、lng、max)。并且在 table 中重复了一些纬度点,例如

1,21211,34.21212,8.11289,90
2,21311,34.94674,8.xx,90
3,215611,34.9934,8.xx,20
4,24311,34.121335673,8.xx,40
5,22211,34.009473,8.xx,60
6,21265,34.21212,8.9786750,70
7,21261,34.21212,8.9786754,80

如您所见,纬度值在第 1、6 和第 7 行重复出现,我想做的是,使查询 return 我正在搜索的纬度的经度值。例如,给定下面发布的代码, 当我调用 getLngs(34.21212) 时,查询应该 return 包含一个列表 8.11289、8.9786750 和 8.9786754

下面贴出的代码return只有一个值

代码:

public ArrayList getLngs(String lat) {
    ArrayList list = new ArrayList<String>();
    SQLiteDatabase db = this.getReadableDatabase();
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT lng FROM " + DATABASE_TABLE_NAME + " WHERE lat = " + lat + " And lng IS NOT NULL", null);

    c.moveToFirst();
    if (c.getCount() == 0) {
        return null;
    } else {
        while (c.moveToNext()) {
            list.add(c.getString(c.getColumnIndexOrThrow("lng")));
        }
    }
    c.close();
    db.close();
    return list;
}

尝试这个也许会奏效-

public ArrayList getLngs(String lat) {
    ArrayList list = new ArrayList<String>();
    SQLiteDatabase db = this.getReadableDatabase();
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT lng FROM " + DATABASE_TABLE_NAME + " WHERE lat = " + lat + " And lng IS NOT NULL", null);

    if (c.moveToFirst()) {
            do {
            list.add(c.getString(c.getColumnIndexOrThrow("lng")));
        } while (c.moveToNext());
    }
    c.close();
    db.close();
    return list;
}

只需从将光标移动到第一个位置的代码中删除 c.moveToFirst();,这样您就只有最后一个值了。