2012-11-08 34 views
-1

我有這個疑問從源碼爲sql的Android

"SELECT id, ssid, bssid, capabilities, level, frequency,geolat, geolong, nickname, ("+rangeDouble+ " * ACOS((SIN(" +pi+ " * " +geoLat+"/180) * SIN(" +pi+ " * lat /180)) + (COS(" +pi+ " * " +geoLat+ " /180) * COS(" +pi+" * lat /180) * COS(ABS((" + pi +" * " + geoLng + " /180) - (" +pi+ " * longg /180)))))) AS distanza FROM wifiTable HAVING distanza <"+ rangeDouble +" ORDER BY distanza LIMIT 0 , 20", null) 

。距離就像是距離英語。

我如何將這個查詢從sql轉換爲sqlite?因爲我不知道如何使用通過在java代碼中選擇獲得的「lat」!

請幫我:)

+0

sqlite沒有ACOS,COS和SIN! –

回答

0

遊標cursor = getReadableDatabase()。 rawQuery(「您的查詢」); 請參考here瞭解更多關於使用SQLite

編輯 你需要有不同的列來存儲你的罪,COS值,你要計算並保持內部程序,當你需要顯示它只是調用函數計算並顯示類似的問題提到here希望這會有所幫助

+0

sqlite沒有ACOS,COS和SIN! –

+0

檢查我編輯的答案 –

0

SQLite支持SQL的大多數功能,所以你不應該需要的,如果你的語法是正確的,改變任何東西。

+0

sqlite沒有ACOS,COS和SIN! –

0

首先了解查詢如何在Android下使用Sqlite。至少可以使用原始查詢,如Deepak Samuel Rajan已經提到的:

遊標cursor = getReadableDatabase()。 rawQuery(「你的查詢在這裏」);

然後,關於您的具體問題,它確實由兩部分組成: 1)與數據庫進行通信以提取您需要的信息。 2)對數據進行某種數學計算。

如果你分開這兩個問題,最好是解決你的問題變得更容易。

例如,假設X和Y座標存儲在數據庫中,並且要根據它們來計算距離:

// get x and y coordinates from databas 
cursor = from query 
x = retrieve from cursor 
y = retrieve from cursor 

// calculate distance: part of your code 
    distance = sqrt(x^2 + y^2) 
0

從理論上講,SQLite支持用戶自定義的功能,但在實踐中,Android的內置的SQL接口不會給你訪問權限。

如果你不想在自己的程序中進行計算,你必須使用NDK來編譯自己的SQLite副本。