Android,sqlite数据库在两列中找到两个值和结果值

时间:2014-07-25 12:00:45

标签: android database sqlite

我正在构建一个Android应用程序,它使用包含4列的910,000条记录的大型预填充数据库。这些列是windspeed,纬度,经度和_id。我想要做的是构建一个sqlite查询,它在纬度列中找到一个lav值,在经度中找到long(经度)值,以及这两列相遇的风速。

所以表格看起来像这样:

_id ..............纬度经度.................. ............ ..WindSpeed
 1 ..................- 9.4869363 ............. 61.3704805 .............. 7
2 .................- 7.6257292 ............... 60.9958851 .............. 8
3 .................- 9.4869363 ................ 60.9958851 ............. .10

所以,如果我使用上表,我想要找到的纬度值为-9.4869363,长值为60.9958851,因此风速将是这两条线路相遇的线路,例如从表格线3开始,因此风速为10

要做到这一点,我尝试使用这行代码,但我不认为这是正确的

 public class MyDatabase extends SQLiteAssetHelper {

private static final String DATABASE_NAME = "WindSpeed.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= "Speed10m";
private static final String ROW_ID=     " _id";
double lat= 3.52;
double Long = 65.42;
public MyDatabase(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

   public Cursor getWindSpeed2(){
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    String [] sqlSelect = {WIND_SPEED,}; 
    String sqlTables = "noabl_10m_out";
    String whereClause = "LAT_VAL = ? AND LONG_VAL = ?";
    String[] whereArgs = new String[] {
        "lat",
        "Long"
    };

    qb.setTables(sqlTables);
    Cursor d = qb.query(db, sqlSelect, whereClause, whereArgs,
            null, null, null);

    d.moveToFirst();

    return d;


   }
  }

这是错的,我搜索得很远,我只是一直感到困惑,所以任何帮助都会非常感谢

2 个答案:

答案 0 :(得分:0)

您似乎没有使用列名,而是使用变量名。

尝试将whereClause更改为:

String whereClause = LAT_VAL + "=? AND " + LONG_VAL + "=?";

whereArgs也是:

String[] whereArgs = new String[] {
    String.valueOf(lat),
    String.valueOf(Long)
};

您的代码中存在许多错误,我开始认为您不知道自己在做什么。这里不必要的逗号:

String [] sqlSelect = {WIND_SPEED,}; 

答案 1 :(得分:0)

更改

 String whereClause = "LAT_VAL = ? AND LONG_VAL = ?";

  String whereClause = LAT_VAL+" = ? AND "+LONG_VAL+" = ?";

String[] whereArgs = new String[] 
{
    "-9.4869363",
    "60.9958851"
};

String[] whereArgs = new String[] 
{
    "lat",
    "Long"
};

LAT_VALLONG_VAL是您用来存储列名称的变量,因此它们应该在引号之外,并且whereArgs需要包含您要比较的值