Android SQLite数据库中最近的lat和long
嗨,我的问题是创建一个android项目,该项目获取用户当前的纬度和经度,然后使用SQLite数据库给出该位置的风速 我的数据库由4列组成,都是字符串值,其中第一列是ID,第二列是风速,第三列是经度,第四列是纬度 我的问题是,我需要在数据库中找到离用户当前位置最近的位置,我以前问过一个问题,并有一个答案,但我不确定a是否正确,b是否正确,如果正确,我做错了什么,因为我完全卡住了,开始恐慌 我认为问题可能在于Where条款,但我可能错了 这是密码Android SQLite数据库中最近的lat和long,android,sqlite,Android,Sqlite,嗨,我的问题是创建一个android项目,该项目获取用户当前的纬度和经度,然后使用SQLite数据库给出该位置的风速 我的数据库由4列组成,都是字符串值,其中第一列是ID,第二列是风速,第三列是经度,第四列是纬度 我的问题是,我需要在数据库中找到离用户当前位置最近的位置,我以前问过一个问题,并有一个答案,但我不确定a是否正确,b是否正确,如果正确,我做错了什么,因为我完全卡住了,开始恐慌 我认为问题可能在于Where条款,但我可能错了 这是密码 public class MyDatabase
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "WindSpeedDB.sqlite";
private static final int DATABASE_VERSION = 1;
private static final String LAT_VAL = "Latitude";
private static final String LONG_VAL = "Longitude";
private static final String WIND_SPEED = "WindSpeed";
private static final String ROW_ID= " ID";
double Lat= 52.9318635;
double Long= 0.6692808;
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public Double getWindSpeed2(){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String [] sqlSelect = {WIND_SPEED,LAT_VAL,LONG_VAL};
String sqlTables = "WindSpeed";
String whereClause = " ? BETWEEN "+LAT_VAL+" - 1 and "+LAT_VAL+" + 1 and ? BETWEEN "+LONG_VAL+" - 1 and "+LONG_VAL+" + 1";
String[] whereArgs = new String[] {
String.valueOf(Lat),
String.valueOf(Long)};
qb.setTables(sqlTables);
Cursor d = qb.query(db, sqlSelect, whereClause, whereArgs, null, null, null);
Double wind_speed= 0.0;
double min_distance=999999;
if (d != null && d.moveToFirst()){
double lat_v=Double.parseDouble(d.getString(2));
double long_v=Double.parseDouble(d.getString(3));
double dis=Math.sqrt( (lat_v-Lat)*(lat_v-Lat) + (long_v-Long)*(long_v-Long) );
if (dis<min_distance){
wind_speed=Double.parseDouble(d.getString(1));
}
}
return wind_speed;
}
}
问题是,这总是给我一个0.0的结果,我相信它在风速下传递一个空值,因此它在数据库中找不到该值,即使lat和long im using的值在数据库中是一个,因此应该给出该点的风速
任何帮助都将不胜感激,因为我被可笑地卡住了 游标的列访问函数使用基于零的索引;必须读取第0、1和2列 光标可能返回多行;将if替换为while 永远不要将数字存储为字符串;在比较中,字符串比任何数字都大
查询从不返回null;你可以放下d!=空检查。不要将数字存储为字符串。你在使用这两个函数中的哪一个?哦,对不起,我从来没有打算包含第一个函数,我正在使用的函数是getWindSpeed2,我将编辑我的帖子删除第一个函数以避免混淆这似乎不能解决问题,我认为问题可能是where语句,我认为检查当前的纬度和经度是否在lat或long-0.1和+0.1之间,反之亦然。