android 中的 SQLite 查询有问题

Trouble with SQLite query in android

我有一个带有两个 viewType 的 listView。对于第一个 viewType,我从一个 SQLite table 获取数据,对于其他的 - 从另一个 table。我正在使用内部连接像这样连接这两个 table:

static {
        sProfileWithHobbiesBuilder = new SQLiteQueryBuilder();
        sProfileWithNewsBuilder.setTables(
                UsersInfoEntry.TABLE_NAME + " INNER JOIN " +
                        HobbiesEntry.TABLE_NAME + " ON " +
                        HobbiesEntry.TABLE_NAME + "." + HobbiesEntry.USER_ID + " = " +
                        UsersInfoEntry.TABLE_NAME + "." + UsersInfoEntry.USER_ID);
    }

一切正常,但是... 如果第二个 table 为空,则 getColumnCounts return 0 然后什么都不显示... 如果我需要下一个结果:如果第二个 table 为空,则只显示第一个 viewType 的信息...

我很乐意解决这个问题!

您可以使用 LEFT OUTER JOIN 而不是 INNER JOINLEFT OUTER JOIN 将保留第一个 table 的列,即使第二个 table 无法连接到指定的连接列(因为没有匹配的记录)。

http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables(java.lang.String) 甚至显示了 LEFT OUTER JOIN.

的示例