2011-06-06 89 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