我有五列的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;
}
答案 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();
,将光标移动到第一个位置,这样您就只有最后一个值。