我正在尝试使用ExpandableListAdapter显示ExpandableListView。我有几个问题。第一个使用UNION如下:
Cursor cur = db.rawQuery("select ig._id, ig.nombre, 0 tipo from InteresGrupo ig where ig.nombre<>'General' "+
"union "+
"select i._id, i.nombre, 1 tipo from Interes i "+
"inner join InteresGrupo g on i.interesGrupo=g._id "+
"where g.nombre='General' "+
"order by ig.nombre", null);
抛出下一个异常:
Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
SQL在SQLite编辑器中完美地运行。最后,我可以让它改变“UNION ALL”的“UNION”(我仍然不知道为什么)。
当我尝试订购元素时,出现了下一个问题(仍未解决)。我用了下一句话:
Cursor cur = db.rawQuery("select ig._id, ig.nombre, 0 tipo from InteresGrupo ig where ig.nombre<>'General' "+
"union all "+
"select i._id, i.nombre, 1 tipo from Interes i "+
"inner join InteresGrupo g on i.interesGrupo=g._id "+
"where g.nombre='General' "+
"order by 2", null);
同样的例外。 SQL语句在SQLite编辑器中再次运行良好,所以我认为在使用适配器的SQL语句时必须有一些限制。
在调用适配器的任何方法之前抛出异常,因此它与适配器内的代码无关,只与SQL语句(我猜)有关。我发生在接下来的三行中的第三行:
ExpandableListView epView = (ExpandableListView)findViewById(R.id.lvIntereses);
mAdapter = new MyExpandableListAdapter(cur, this);
epView.setAdapter(mAdapter);
任何人都可以提示?
提前致谢。
答案 0 :(得分:0)
"union all"+"select ....
union allselect
..
你需要在union all之间留一个空格并选择
实施例。 "union all " + "select ....
或仅"union all select ..."