0

这是我的数据库类中的一种方法:

public Cursor fetchFavTitles() {
    return myDataBase.rawQuery("SELECT rowid as _id, title
        FROM table1 JOIN table2 JOIN table3 JOIN table4 JOIN table5 JOIN table6
        WHERE fav = TRUE", null);
}

我的 SQLite 数据库有 6 个表:

  1. table1 => rowid,标题,内容,收藏
  2. table2 => rowid,标题,内容,收藏
  3. table3 => rowid,标题,内容,收藏
  4. table4 => rowid,标题,内容,收藏
  5. table5 => rowid,标题,内容,收藏
  6. table6 => rowid,标题,收藏

在我的活动中,我写道:

Cursor cursor = myDbHelper.fetchFavTitles();

并且应用程序强制关闭!

知道我在哪里弄错了吗?

更新

这是 LogCat 的快照,我看不懂,我过滤了输出android.database在此处输入图像描述

我想要做的是title从所有表中获取具有值 TRUE 的 fav(类型:BOOL)的(类型:TEXT)并将它们显示在一个表中ListView(使用 SimpleCursorAdapter)。

4

1 回答 1

1

在不完全了解您要做什么的情况下,我猜您需要将查询更改为:

SELECT rowid as _id, title
        FROM table1 
        WHERE fav = TRUE
UNION ALL
SELECT rowid as _id, title
        FROM table2
        WHERE fav = TRUE
UNION ALL
SELECT rowid as _id, title
        FROM table3
        WHERE fav = TRUE
UNION ALL   
SELECT rowid as _id, title
        FROM table4 
        WHERE fav = TRUE
UNION ALL       
SELECT rowid as _id, title
        FROM table5 
        WHERE fav = TRUE
UNION ALL       
SELECT rowid as _id, title
        FROM table6 
        WHERE fav = TRUE

这将从每个表中获取 'fav = TRUE' 的所有结果,并将它们全部放入一个结果集中。如果您不想重复,可以将“UNION ALL”更改为“UNION”。现在您的查询失败了,因为 'SELECT rowid as _id, title' 不知道要从哪个表中提取 'title' 字段。

于 2011-07-11T08:14:57.360 回答