【发布时间】:2019-10-01 12:06:52
【问题描述】:
所以我有一个包含名称、纬度和经度列的露营地数据库。 我正在尝试使用游标对象执行查询,但似乎无法正常工作。
我有:
Campsite getClosestCampsite() {
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT COL_NAME, COL_LATITUDE, COL_LONGITUDE, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM TABLE_CAMPSITES HAVING distance < 25 ORDER BY distance LIMIT 0 , 1;";
Cursor cursor = db.rawQuery(query, null);
Campsite campsite = new Campsite();
campsite.setName(cursor.getString(1));
campsite.setLatitude(cursor.getDouble(6));
campsite.setLongitude(cursor.getDouble(7));
cursor.close();
return campsite;
}
所以我只是想返回 1 个露营地,也就是最近的露营地,这样我就可以将名称和坐标传递给谷歌地图功能。 我是否输入了正确的查询以获得基于纬度和经度的最近位置?
IDE 下划线 HAVING 并给我 , , , AS GROUP 或预期的分号
表结构:
@Override
public void onCreate(SQLiteDatabase db) {
// CREATE TABLE
String CREATE_CAMPSITES_TABLE = "CREATE TABLE " + TABLE_CAMPSITES + "("
+ COL_ID + " INTEGER PRIMARY KEY," + COL_NAME + " TEXT,"
+ COL_CITY + " TEXT," + COL_FEATURE + " TEXT," + COL_FAVORITE + " TEXT," + COL_RATING + " INTEGER," + COL_LATITUDE + " REAL," + COL_LONGITUDE + " REAL" + ")";
db.execSQL(CREATE_CAMPSITES_TABLE);
【问题讨论】:
-
HAVING->WHERE -
另外,
LIMIT 1
标签: java android sqlite android-sqlite