如何查询多行

时间:2016-03-18 13:00:43

标签: android sqlite cursor android-sqlite android-cursor

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

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行重复纬度值,我想要做的是,使查询返回 我正在搜索的纬度的经度值。举个例子,鉴于下面发布的代码, 当我调用getLngs(34.21212)时,查询应该返回一个包含的列表 8.11289,8.9786750和8.9786754

下面发布的代码只返回一个值

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;
}

2 个答案:

答案 0 :(得分:0)

尝试这可能它会起作用 -

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;
}

答案 1 :(得分:0)

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