2010-08-04 53 views
1

我的应用程序中有2个Android数据库。举一个例子起见,让说数据库#1被称为JOBS并具有下列: "Jobs Primary Key" - "Job Title" - "Job Description"适用于2个数据库源的Android适配器

数据库#2被称为人,有以下栏目: "People Primary Key" - "First Name" - "Last Name" - "Jobs ID Key"

(是的,我知道这些不是从数据库的角度来看最大的设计,这只是帮助为我的问题绘制图片)。

在一个ListView中,我想显示“First Name” - “Last Name” - “Job Title”列(数据库#1中的1列,数据库#2中的2列)。使用SimpleCursorAdapter,是否有可能以某种方式实现这一点?

如果我不使用SimpleCursorAdapter,我认为完成此操作的唯一方法是使用ArrayAdapter,我使用StringBuilder将3列连接在一起,然后填充ListView,但我是想知道是否有更好的方法来实现这一点。

回答

0

是的,这是可能的—假设您的意思是在一个数据库中的两个表,而不是两个单独的数据库。

你只需要查询你的数据库到join这两个表的信息在一起。

例如,某事(完全未经测试)是这样的:
String[] columns = { "first_name", "last_name", "title" };
SQLiteDatabase db = mDbOpenHelper .getReadableDatabase();
Cursor c = db. query ("person LEFT OUTER JOIN job ON person.job_id = job.id", columns, null, null, null, null, null);

然后,你可以通过CursorAdapter如常。

+0

非常感谢克里斯托弗,今晚我必须尝试一下。我会让你知道结果如何。 – Michael 2010-08-04 19:46:16

+0

谢谢你们,这个窍门,使用了左外连接。我很抱歉接受答案的迟到,我没有得到立即测试的机会。再次感谢! – Michael 2010-08-09 15:37:15

0

我似乎无法评论,但如果您希望没有工作的人也能显示出来,您会希望使用LEFT OUTER JOIN而不是JOIN(在Christopher的答案中)。

+0

啊,我确实想过那样就懒惰了。谢谢,我已经添加到我的答案:) – 2010-08-05 08:33:13