【问题标题】:How to send data to server that stored in RoomDb如何将数据发送到存储在 RoomDb 中的服务器
【发布时间】:2021-01-31 17:33:16
【问题描述】:

我正在创建一个应用程序,其中数据首先存储在 RoomDb 中,然后将存储的数据发送到服务器。我已成功将数据存储在 RoomDb 中,但现在如何将数据发送到服务器。这是我到目前为止所做的:

ProductDao.java

@Dao
public interface ProductDao {

@Insert(onConflict = OnConflictStrategy.IGNORE)
void insert(CartProduct... products);

}

CartProduct.java

@Entity(tableName = "MyProduct")
public class CartProduct {

@PrimaryKey(autoGenerate = true)
@NonNull
int id;

@ColumnInfo(name="_pid")
String _pid;

@ColumnInfo(name="name")
String name;

@ColumnInfo(name="price")
int price;

@ColumnInfo(name="bulk_price")
int bulk_price;

@ColumnInfo(name="image_url")
String image_url;

@ColumnInfo(name="qnt")
int qnt;

@ColumnInfo(name ="discount_price")
int disprice;

public CartProduct(String _pid, String name, int price, int bulk_price, String image_url, int qnt,int disprice) {
    this._pid = _pid;
    this.name = name;
    this.price = price;
    this.bulk_price = bulk_price;
    this.image_url = image_url;
    this.qnt = qnt;
    this.disprice = disprice;
}

public int getId() {
    return id;
}

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

public String get_pid() {
    return _pid;
}

public void set_pid(String _pid) {
    this._pid = _pid;
}

public String getName() {
    return name;
}

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

public int getPrice() {
    return price;
}

public void setPrice(int price) {
    this.price = price;
}

public int getBulk_price() {
    return bulk_price;
}

public void setBulk_price(int bulk_price) {
    this.bulk_price = bulk_price;
}

public String getImage_url() {
    return image_url;
}

public void setImage_url(String image_url) {
    this.image_url = image_url;
}

public int getQnt() {
    return qnt;
}

public void setQnt(int qnt) {
    this.qnt = qnt;
}

public int getDisprice() {
    return disprice;
}

public void setDisprice(int disprice) {
    this.disprice = disprice;
}
}

ProductDb.java

@Database(entities = {CartProduct.class},version = 2,exportSchema = false)
public abstract class ProductDb extends RoomDatabase {

public abstract ProductDao productDao();

private static ProductDb instance;

public static synchronized ProductDb getInstance(Context context){

    if(instance == null){
        instance = Room.databaseBuilder(context.getApplicationContext(),ProductDb.class,"Product_db")
                .allowMainThreadQueries().fallbackToDestructiveMigration().build();
    }
    return instance;
  }
}

MainActivity.java

  ProductDb db = ProductDb.getInstance(context);
  CartProduct cartProduct = new CartProduct(model.getId(),model.getName(),Integer.parseInt(model.getPrice()),
                    Integer.parseInt(model.getDisprice()),model.getImgurl(),1,Integer.parseInt(model.getDisprice()));
  db.productDao().insert(cartProduct);
            
            

如何将此房间数据发送到服务器?

【问题讨论】:

  • .allowMainThreadQueries() 这是个糟糕的主意
  • 你能从房间里读取数据吗?你能打api调用吗?您正在为哪些问题苦苦挣扎?你是完全不能同时做这两件事还是你正在为具体而苦苦挣扎?您将 1) 读回数据,然后 2) 将其发送到服务器,不确定您在这里遇到什么问题
  • .allowMainThreadQueries() 我该如何纠正这个问题。
  • 我可以在 RoomDb 中读取和写入数据,但我想将数据发送到存储在 RoomDB 中的服务器。

标签: android android-room


【解决方案1】:

您可以使用此查询从 MyProduct 表中检索特定项目:

@Query("SELECT * FROM MyProduct WHERE id =: id")
MyProduct getItemById(int id);

或从 MyProduct 表中检索所有项目:

@Query("SELECT * FROM MyProduct")
List<MyProduct> getAllItems();

一旦你有特定的项目或所有项目,你可以调用 api 方法将数据发送到服务器。 例如,如果您的改造实例被称为api,并且在您的界面中您有发送数据的方法,您应该这样做:

api.sendItem(item);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多