2011-06-06 108 views
0

我得到了以下rawquerySQLite的rawquery selectionArgs兩個不工作

private static final String DB_QUERY_GETPOS = "select f._id, F.FName, F.FArt, P.VName, O.Gebaeude, O.Raum from Faecher as F " 
                + "inner join profs as P on F.Prof_ID = P._id " 
                + "inner join ort as o on F.ort_id = o._id " 
                + "inner join position as PO on PO.pos=? and id is not null where f._id = PO.id and PO.pos=? order by f._id;"; 

爲什麼會ArrayOutofBounds例外訪問充滿了這個查詢結果的光標或ArrayList對象時?

爲什麼不? PARAMS拿起我傳遞給rawquery的ARGS?

+0

請問您可以發佈您訪問arraylist對象的代碼,以及您發送rawquery的地方嗎? – 2011-06-06 22:53:49

+0

Hi @John。當我今天完成工作時,我會爲你添加這些行....這是一個私人項目,我只有在家裏的代碼。基本上這個問題是我在底部的評論中描述的。但到目前爲止,我可以告訴你的是,查詢只是在rawquery調用中看到的字符串+帶有選擇參數的字符串數組。 db.rawquery(DB_QUERY_GETPOS,String [] args); – m0rb 2011-06-07 13:49:19

回答

1

當您在Android中使用遊標時,請記住在讀取數據之前使用moveToFirst函數。否則,將導致ArrayOutOfBounds異常。

+0

嗨Dimse。我知道如何處理遊標,這不是問題。 outofbounds異常的原因是,Cursor(或ListArray)保持爲空,因爲SQL rawquery沒有使用我傳遞給它的參數,它應該替換String中的questionmarks(?)(見上面)。當我把一些固定整數...它工作正常。 – m0rb 2011-06-07 13:45:39

+0

首先,我可以從文檔中看到SQL語句不能以';'結尾。 (http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String,java.lang.String中[])) 也許有事情做與字符串是最終的?也許這會給替換代碼造成問題? – Dimse 2011-06-07 16:47:14

+0

嗨Dimse!我不能相信我沒有看到這個我自己... :-) 我想有時如果你有一個bug的可能性太多,你沒有看到最明顯的.... thx的提示;-) 我刪除了「最終」,它完美地工作大聲笑 – m0rb 2011-06-07 20:04:58