Android SQLite数据库中最近的lat和long

Android SQLite数据库中最近的lat和long,android,sqlite,Android,Sqlite,嗨,我的问题是创建一个android项目,该项目获取用户当前的纬度和经度,然后使用SQLite数据库给出该位置的风速 我的数据库由4列组成,都是字符串值,其中第一列是ID,第二列是风速,第三列是经度,第四列是纬度 我的问题是,我需要在数据库中找到离用户当前位置最近的位置,我以前问过一个问题,并有一个答案,但我不确定a是否正确,b是否正确,如果正确,我做错了什么,因为我完全卡住了,开始恐慌 我认为问题可能在于Where条款,但我可能错了 这是密码 public class MyDatabase

嗨,我的问题是创建一个android项目,该项目获取用户当前的纬度和经度,然后使用SQLite数据库给出该位置的风速

我的数据库由4列组成,都是字符串值,其中第一列是ID,第二列是风速,第三列是经度,第四列是纬度

我的问题是,我需要在数据库中找到离用户当前位置最近的位置,我以前问过一个问题,并有一个答案,但我不确定a是否正确,b是否正确,如果正确,我做错了什么,因为我完全卡住了,开始恐慌

我认为问题可能在于Where条款,但我可能错了

这是密码

  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之间,反之亦然。