【问题标题】:SQLite rawquery selectionArgs not workingSQLite rawquery selectionArgs 不起作用
【发布时间】:2011-06-06 22:46:55
【问题描述】:

我得到了以下原始查询

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;";

为什么在访问填充了此查询结果的 Cursor 或 ArrayList 对象时会出现ArrayOutofBounds 异常?

为什么? 参数不获取我传递给 rawquery 的参数?

【问题讨论】:

  • 能否请您发布访问 arraylist 对象的代码,以及您发送 rawquery 的位置?
  • 嗨@John。当我今天完成工作时,我会为你添加这些行......这是一个私人项目,我只在家里得到代码。基本上问题是我在底部的评论中描述的。但到目前为止我可以告诉你的是,查询只是你在 rawquery 调用中看到的字符串 + 带有选择参数的字符串数组。 db.rawquery(DB_QUERY_GETPOS, String[] args);

标签: android sqlite


【解决方案1】:

当您在 Android 中使用游标时,请记住在读取数据之前使用 moveToFirst 函数。否则会导致 ArrayOutOfBounds 异常。

【讨论】:

  • 嗨昏暗。我知道如何处理游标,这不是问题。 outofbounds 异常的原因是,Cursor(或 ListArray)保持为空,因为 SQL rawquery 没有使用我传递给它的参数,这些参数应该替换你在上面看到的字符串中的问号(?)。当我输入一些固定整数时......它工作正常。
  • 首先我可以从文档中看到SQL语句不能以';'结尾。 (developer.android.com/reference/android/database/sqlite/…, java.lang.String[])) 也许它与最终的字符串有关?也许这会给替换代码带来问题?
  • 你好昏暗!我不敢相信我自己没有看到这个...... :-) 我想有时如果你有太多的错误可能性,你看不到最明显的那些......谢谢提示; -) 我删除了“最终”,它完美地工作了大声笑
猜你喜欢
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多