iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Mobile Development

Android studio 30天初學筆記系列 第 25

[Android Studio 30天挑戰] Day25 -介紹Room

  • 分享至 

  • xImage
  •  

今天要來介紹Room,Room是專門用來儲存本地端資料,相較於SQLife Google更推薦使用該套件,因為它使用起來更簡潔,還能盡可能減少重複且容易出錯的樣板程式碼的便利註解!!!那接下來就來好好介紹。

主要元件與流程圖

  1. 資料庫類別(DataBase) :用於保存資料庫並做為應用程式保留資料基礎連線的主要存取點。
  2. 資料實體(Entity) :代表應用程式資料庫中的資料表。
  3. 資料存取物件(DAO) :提供應用程式可用於查詢、更新、插入及刪除資料庫中資料的方法。

https://ithelp.ithome.com.tw/upload/images/20220802/20150369Er0uqmEpOp.png

DataBase

這邊是用了一個單利的方法,不然新增資料庫是很吃資源的。
註解 @Database

  1. entities : 是要繼承你所設定的entity。
  2. version : 則是你的版本。
  3. exportSchema : 設false爲不保存架構更改記錄。
@Database(entities = {MyData.class},version = 1,exportSchema = false)
public abstract class DataBase extends RoomDatabase {
    public static final String DB_NAME = "RecordData.db";//資料庫名稱
    private static volatile DataBase instance;
    
    public static synchronized DataBase getInstance(Context context){
        //如果沒有建立過資料庫
        if(instance == null){
            instance = create(context);//創立新的資料庫
        }
        return instance;
    }
    private static DataBase create(final Context context){
        return Room.databaseBuilder(context,DataBase.class,DB_NAME).build();
    }
    public abstract DataUao getDataUao();//設置對外接口
}

Entity

首先先建立Getter-Setter的檔案,就像是之前接API時一樣建立你資料表要用的資料。

//標示MyData為資料表名子為MyTable
@Entity(tableName = "MyTable")
public class MyData {
    private String name;
    //設定uid為主件
    @PrimaryKey(autoGenerate = true)
    private int uid;
    private String id;
    private String hobby;

    public MyData(String name, String id, String hobby) {
        this.name = name;
        this.id = id;
        this.hobby = hobby;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

DAO

這邊是用一些SQLife語法來與資料庫進行互動。

  1. @Query(查詢)
  2. @Delete(刪除)
  3. @Update(更新)
  4. @Insert(插入)
@Dao
public interface DataUao {
    String tableName = "MyTable";
    //新增資料
    //預設萬一執行出錯怎麼辦,REPLACE為覆蓋
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    Completable initsert(MyData data);
    //拿取所有資料
    @Query("SELECT * FROM " + tableName)
    Maybe<List<MyData>> displayAll();
    //修改資料
    @Query("UPDATE "+tableName+" SET name = :name,id=:id,hobby=:hobby WHERE id = :id" )
    Completable updateData(String name,String id,String hobby);

成功建立後,就能在底下的APP Inspection看到資料庫。
https://ithelp.ithome.com.tw/upload/images/20220802/20150369U4DNyUOy1l.png


上一篇
[Android Studio 30天挑戰] Day24 -介紹MVC MVP
下一篇
[Android Studio 30天挑戰] Day26 - 介紹DataBinding
系列文
Android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言