在Android应用中从sqlite迁移到房间的下一步

时间:2018-09-18 16:53:43

标签: android android-sqlite android-room

我已经使用sqlite db构建了一个清单应用程序来存储和检索数据。此应用程序的GitHub链接位于:inventory

我现在想使用Room Persistence库实现相同的应用程序,并已开始相应迁移。到现在为止,我一直关注:

  1. 使用Products注释添加了名为@Entity的POJO类:
  

@Entity(tableName =“ InventoryList”)公共类产品{

@NonNull
@PrimaryKey
private int _ID;
private String PRODUCT_NAME;
private String PRICE;
private String QUANTITY;
private String SUPPLIER;
private String SUPP_PH_NUM;

public Products() {

}

// getters and setters

@NonNull
public int get_ID() {
    return _ID;
}

public String getPRODUCT_NAME() {
    return PRODUCT_NAME;
}

public String getPRICE() {
    return PRICE;
}

public String getQUANTITY() {
    return QUANTITY;
}

public String getSUPPLIER() {
    return SUPPLIER;
}

public String getSUPP_PH_NUM() {
    return SUPP_PH_NUM;
}


public void set_ID(@NonNull int _ID) {
    this._ID = _ID;
}

public void setPRODUCT_NAME(String PRODUCT_NAME) {
    this.PRODUCT_NAME = PRODUCT_NAME;
}

public void setPRICE(String PRICE) {
    this.PRICE = PRICE;
}

public void setQUANTITY(String QUANTITY) {
    this.QUANTITY = QUANTITY;
}

public void setSUPPLIER(String SUPPLIER) {
    this.SUPPLIER = SUPPLIER;
}

public void setSUPP_PH_NUM(String SUPP_PH_NUM) {
    this.SUPP_PH_NUM = SUPP_PH_NUM;
}
     

}

  1. 使用ProductsDB注释的@Database类声明了db:
  

@数据库(实体= {Products.class},版本= 2)

public abstract class ProductDB extends RoomDatabase {

public abstract ProductDAO productDAO();

private static final String DB_NAME = "inventory.db";

private static ProductDB INSTANCE;

static ProductDB getDatabase(final Context context) {
    if (INSTANCE == null) {
        synchronized (ProductDB.class) {
            if (INSTANCE == null) {
                INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                        ProductDB.class,DB_NAME)
                        .fallbackToDestructiveMigration()
                        .build();
            }
        }
    }
    return INSTANCE;
} }
  1. 使用ProductDAO批注的名为@DAO的接口:
  

@Dao

public interface ProductDAO {

    @Insert(onConflict = REPLACE)

    void insertProduct(Products products);

    @Update
    void updateProduct(Products products);

    @Query("SELECT * from InventoryList")

    List<Products> getProducts();
}

在完成上述基础工作之后,我不确定如何继续进行。我比较困惑或困惑的地方是原始应用程序中ProductCursorAdapter类的用法,以及如何针对Room处理或更新它?我需要就该课程对房间进行任何更改吗?

在我的新实施中,我还需要做哪些更新/更改,这样Room迁移就足够了?

我希望我的问题和所提供的信息清楚。我正在寻找逐步的输入/解决方案,以便在迁移时也能很好地理解。另外,让我知道我到目前为止所做的基础工作是否缺少任何内容。

0 个答案:

没有答案