Bru*_*ce0 3 sqlite android join
我正在创建一个应用程序作为学习工具,并且我很难加入查询.
我有一个带有两个表马和盖子的数据库,声明如下;
private static final String HORSES_CREATE = "create table horses (_id integer primary key autoincrement, "
+ "name text not null, type integer not null, birthDate text not null, vaccineDate text not null, "
+ "inFoal integer not null, notes text not null);";
Run Code Online (Sandbox Code Playgroud)
'type'字段指的是种马,母马,阉割等,并从一个微调器(从XML String数组中填充)中选择.
private static final String COVERS_CREATE = "create table covers (_id integer primary key autoincrement, "
+ "stallionName integer not null, mareName integer not null, firstCoverDate text not null, lastCoverDate text not null, "
+ "scan14Date text not null, scan28Date text not null, foalingDate text not null, inFoal integer not null, notes text not null);";
Run Code Online (Sandbox Code Playgroud)
stallionName实际上存储为来自马桌的马的_id字段.它是从一个旋转器中选择的,该旋转器只显示马匹表中定义为"Stallion"的马匹.(同样适用于Mare).
我有一个类'DatabaseHelper'来创建和升级表,每个表都有自己的适配器类'horsesDbAdapter'和'coversDbAdapter',其中包含添加,编辑和删除条目的方法以及相关查询.(fetchAllHorses(),fetchHorse(long rowId))
例如:
public Cursor fetchAllHorses() {
return mDb.query(DATABASE_TABLE,
new String[] { KEY_ROWID, KEY_NAME, KEY_TYPE, KEY_BIRTHDATE,
KEY_VACCINEDATE, KEY_INFOAL, KEY_NOTES }, null, null,
null, null, null);
}
Run Code Online (Sandbox Code Playgroud)
(它全部改编自Android记事本示例)
我在listview中显示了cover表的内容(只显示了stallionName和mareName).但由于这些字段只包含对horse表的唯一引用,所以显示的是相当无信息的_id字段.
我的问题是; 如何获得要在listView中显示的马匹的相关名称?我已经读过加入查询等但是在我尝试实现它们时迷路了.我假设我必须加入horses._id和covers.stallionName(然后为MareName创建一个几乎完全相同的名称),但我找不到如何执行此操作的具体示例.
如果需要任何其他信息/代码,请与我们联系.
任何帮助将非常感谢,提前谢谢.
编辑:我已在马表中引用了stallionName和mareName外键引用(_id),但我仍然不确定如何以及在何处实现连接查询; 应该是在horsesDbAdapter,coverDbAdapter还是coverList类?(coversList是创建和填充listView的类)封面表声明现在读取;
private static final String COVERS_CREATE = "create table covers (_id integer primary key autoincrement, "
+ "stallionName integer not null, mareName integer not null, firstCoverDate text not null, lastCoverDate text not null, "
+ "scan14Date text not null, scan28Date text not null, foalingDate text not null, inFoal integer not null, notes text not null," +
"FOREIGN KEY (stallionName) REFERENCES horses (_id), FOREIGN KEY (mareName) REFERENCES horses (_id));";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8313 次 |
最近记录: |