iT邦幫忙

0

Android SQLite 回傳的問題 資料庫關聯

各位大大好!

我想從資料庫讀出資料! 需要使用到 join的SQL

但是我回傳的是我自建的類別該如何多回傳關聯結果的資料。

例如:

比賽table

id  name  time

運動員table

id  name  比賽_id

自建的 運動員類別 只有 id,name,比賽_id

查詢的方法想用 join 關聯出 比賽資料

但是我的方法只有回傳,一個 List 運動員類別。

public List<運動員> getAll運動員() {
    //查詢資料
}

請問各位大大我該如何修改,才可以達到我要的結果。

1 個回答

0
fysh711426
iT邦新手 3 級 ‧ 2017-11-15 10:04:00
最佳解答

提供兩種小弟常用的做法

  1. 建立 ViewModel 包含所有欄位
public List<運動員ViewModel> getAll運動員() {
    //查詢資料
}
  1. 將運動員 Class 增加 比賽 屬性,然後將查詢回來的資料填入
public class 運動員
{
    int id;
    string name;
    int 比賽_id;
    比賽 xxx;
}
看更多先前的回應...收起先前的回應...
VictorW iT邦新手 5 級 ‧ 2017-11-15 11:00:32 檢舉

真的太謝謝你了! 我用第一個方法完成了! 謝謝!

想再請問一下
我也嘗試使用第二個方法,不過有遇到一點困難就是把查詢回來的資料使用

while (cursor.moveToNext()){
    List<運動員> 運動員List = new ArrayList<>();
//把查詢資結果,寫到一個 List 陣列
    Integer id = cursor.getInt(0);    
    string  name = cursor.getString(1);
    Integer 比賽_id = cursor.getInt(2);
    //要如何寫這邊的程式碼?
    比賽 比賽 = *******;
    
    cursor.close();
    return 運動員List;
}

如果我查詢出來的資料 [比賽] id  name  time 分別在 第 3 4 5 欄位的話。

小魚 iT邦新手 1 級 ‧ 2017-11-15 12:01:54 檢舉

這年頭為什麼都喜歡用中文寫程式 @@
我是覺得用SQL語法比較能抓到複雜一點的資料,
不過好像很多人都喜歡用Entity...

比賽 比賽 = new 比賽
{
     Id= cursor.getInt(3)
}

這是c#寫法,不知道java有沒有有類似的寫法,
或是直接new出來再把值塞進去

比賽 比賽 = new 比賽();
比賽.Id = cursor.getInt(3);

兩種都用過,我比較喜歡 ViewModel 寫法,欄位平行會比較漂亮,第二種是模仿 Entity 的寫法
/images/emoticon/emoticon37.gif

回小魚大大,兩種都不錯,如果不考慮效能,我比較喜歡 Entity,用過就回不去了,哈哈

VictorW iT邦新手 5 級 ‧ 2017-11-15 14:18:18 檢舉

回魚大 臨時舉一個範例! 沒有特別多想就用中文!

VictorW iT邦新手 5 級 ‧ 2017-11-15 14:22:54 檢舉

小弟我好像連Entity 都不知道@@
回兩位大大 是否有推薦java什麼書籍或網路上的資源可以研究的嗎?
專攻於 java 比較好,還在要再買 Android 相關的書?
不知道是不是基礎不好~/images/emoticon/emoticon06.gif

Entity 是微軟 .NET 的東西,用來做資料庫的 ORM,然後小弟我其實沒有寫過 JAVA,我熟悉的是 C#,不過它們蠻像的,哈哈

JAVA 和 Android 當然是都學最好,一個是程式語言,一個是作業系統,相浮相沉

這些疑問我以前也都有過,不過那時沒有人可以問,只能自己摸索
/images/emoticon/emoticon37.gif

我要發表回答

立即登入回答