我正在創建一個應用程序作爲學習工具,並且在加入查詢時遇到困難。Android SQLite加入查詢
我有一個數據庫有兩個表 - 馬和封面 - 聲明如下;
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);";
「類型」字段是指種馬,母馬,駒等,並從紡絲器(從XML字符串數組填充)來選擇。
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);";
stallionName實際上是從馬錶中存儲爲馬的_id字段。它是從一個微調器中選擇的,只顯示馬錶中被定義爲「馬」的馬的類型。 (這同樣適用於Mare)。
我有一個'DatabaseHelper'類來創建和升級表,每個表都有自己的適配器類'horsesDbAdapter'和'coversDbAdapter',它包含添加,編輯和刪除條目以及相關查詢的方法。 (fetchAllHorses(),fetchHorse(長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);
}
(這是所有改編自Android的記事本爲例)
我有一個列表視圖顯示的封面表的內容(只顯示了stallionName和mareName)。但是,由於這些字段只包含對馬錶的唯一引用,所有顯示的內容都是相當無用的_id字段。
我的問題是;我怎樣才能得到相關的名字馬在listView中顯示?我讀過關於連接查詢等,但當我嘗試實現它們時會丟失。我假設我必須加入horses._id和covers.stallionName(然後爲MareName創建一個幾乎相同的文件),但我找不到如何執行此操作的具體示例。
請讓我知道是否需要任何額外的信息/代碼。
任何幫助將不勝感激,謝謝你提前。
編輯: 我已經在馬錶中做了stallionName和mareName外鍵引用(_id),但我仍然不確定如何以及在哪裏實現連接查詢;它應該在馬dbAdapter,coversDbAdapter或coversList類? (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));";
你應該建立在佔地表外鍵引用馬錶的相關列。 – Sajmon 2012-07-05 18:17:47
@deceiver Thankyou的輸入。我已經將這添加到封面表聲明中,但我仍然不確定如何實際實現連接並讓它填充listView – Bruce0 2012-07-05 19:00:16