2014-07-25 27 views
0

im構建一個android應用程序,它使用包含4列的910,000條記錄的大型預填充數據庫。這些列是windspeed,緯度,經度和_id。我試圖做的是構建一個sqlite查詢,在緯度列中查找lav值,在經度中查找長(經度)值以及這兩列相遇的風速。安卓,sqlite數據庫在兩列中找到兩個值,結果值爲

所以表將是這個樣子:

_id ..............緯度................. .Longitude .............. 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; 


    } 
    } 

這是錯的,香港專業教育學院搜查遠,風力和我打的時候老是混淆TBH所以任何幫助將是巨大的感謝

回答

0

看來你不使用的列名,而是變量名。

嘗試將whereClause更改爲:在whereArgs

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

另外要:

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

有在你的代碼中的許多錯誤,我開始認爲你不知道你正在做的..不必要的逗號這裏:

String [] sqlSelect = {WIND_SPEED,}; 
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需要包含你想要比較的值

+0

好吧,謝謝,我將如何獲得風速值在那個網站那麼它會是遊標值?或者只是指向值 – user3873157

+0

的指針WIND_SPEED是其值將返回給您的列。 – Apoorv

+0

是的,這是計劃,我只是想要風速在拉特和長的值相遇。 – user3873157