如何查询多行
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();
,这样您就只有最后一个值了。
我有 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();
,这样您就只有最后一个值了。