0

我正在尝试使用 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”更改为“UNION ALL”(我仍然不知道为什么)。

当我尝试订购元素时,下一个问题(仍未解决)出现了。我用了下一句话:

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

任何人都可以给小费吗?

提前致谢。

4

1 回答 1

0
"union all"+"select ....

结果在union allselect..

您需要在 union all 和 select 之间留一个空格

前任。"union all " + "select ....

要不就"union all select ..."

于 2013-03-12T19:52:21.807 回答