当前位置: 首页 > 知识库问答 >
问题:

数据不插入数据库室Android

柯振濂
2023-03-14

我是android新手,这是我第一次在应用程序中使用room。未执行插入操作或未创建数据库或任何其他错误。

我不知道我做错了什么,所以我需要你的帮助。

此程序正在运行,但未显示任何结果。屏幕上什么都没有显示。

这是我的代码-请让我知道此代码中的错误以及我应该如何更正它。

汽车细节。JAVA

@PrimaryKey
@NonNull
@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("desc")
@Expose
private String desc;
@SerializedName("image")
@Expose
private String image;

卡多。爪哇-

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Car_Details car_details);

@Query("Select * from car_table")
LiveData<List<Car_Details>> selectAll();

CarListDatabase。JAVA

private static CarListDatabase instance;

public abstract CarDao carDao();

public static synchronized CarListDatabase getInstance(Context context){

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

CarRepository.java

公共无效getCarList(){

    CarlistInterface carlistInterface= retrofit.create(CarlistInterface.class);

    Call<List<Car_Details>> carList= carlistInterface.carList();

    carList.enqueue(new Callback<List<Car_Details>>() {
        @Override
        public void onResponse(Call<List<Car_Details>> call, final Response<List<Car_Details>> response) {

            if(response.body() != null){

                List<Car_Details> car_details = response.body();

                for (int i = 0; i < car_details.size(); i++) {

                    String id=car_details.get(i).getId();
                    String names = car_details.get(i).getName();
                    String desc=car_details.get(i).getDesc();
                    String image= car_details.get(i).getImage();

                    Car_Details car = new Car_Details();
                    car .setId(id);
                    car .setName(names);
                    car .setDesc(desc);
                    car .setImage(image);

                  new InsertNoteAsyncTask(carDao).execute(car);
            }
        }
    }
    });
    }

public LiveData<List<Car_Details>> getCarLists(){

    return allCarList;
}

private static class  InsertNoteAsyncTask extends AsyncTask<Car_Details,Void,Void> {

    private CarDao carDao;
    private InsertNoteAsyncTask(CarDao carDao){
        this.carDao= carDao;
    }

    @Override
    protected Void doInBackground(Car_Details... car_details) {
        carDao.insert(car_details[0]);
        return null;
    }

CarViewModel。JAVA

public CarViewModel(@NonNull Application application) {
    super(application);
    repository= new CarRepository(application);
    carList= repository.getCarLists();
}


public LiveData<List<Car_Details>> getListLiveData() {
    return carList;

主要活动。JAVA

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    repository = new CarRepository(this);
    carViewModel = ViewModelProviders.of(this).get(CarViewModel.class);

    recyclerView= findViewById(R.id.cars_recyclerView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    List = new ArrayList<>();

    recyclerAdapter = new RecyclerAdapter(List);
    recyclerView.setAdapter(recyclerAdapter);


    recyclerAdapter = new RecyclerAdapter(List);
    recyclerView.setAdapter(recyclerAdapter);

    carViewModel.getListLiveData().observe(this, new 
Observer<java.util.List<Car_Details>>() {
        @Override
        public void onChanged(java.util.List<Car_Details> car_details) {
            recyclerAdapter.setUserList(List);
        }
    });


    repository.getCarList();
}

回收器适配器。JAVA

公共类RecyclerAdapter扩展了RecyclerView。适配器{

List<Car_Details> carList= new ArrayList<>();

public RecyclerAdapter(List<Car_Details> carList) {
    this.carList = carList;
   }

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    LayoutInflater layoutInflater= LayoutInflater.from(parent.getContext());
    View view= layoutInflater.inflate(R.layout.row_item,parent,false);
    return new RecyclerAdapter.ViewHolder(view);
   }

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.car_name.setText(carList.get(position).getName());
    holder.car_desc.setText(carList.get(position).getDesc());

  }

public void setUserList(List<Car_Details> userList) {
    this.carList = userList;
    notifyDataSetChanged();
   }

@Override
public int getItemCount() {
    return carList.size();
   }

 class ViewHolder extends RecyclerView.ViewHolder {

    private TextView car_name,car_desc;

     public ViewHolder(@NonNull View itemView) {
      super(itemView);

      car_name= itemView.findViewById(R.id.car_name);
      car_desc= itemView.findViewById(R.id.car_desc);

    }
    }
      }

@Override
public int getItemCount() {
    return carList.size();
    }

class ViewHolder extends RecyclerView.ViewHolder {

    private TextView car_name,car_desc;

    public ViewHolder(@NonNull View itemView) {
      super(itemView);

      car_name= itemView.findViewById(R.id.car_name);
      car_desc= itemView.findViewById(R.id.car_desc);

    }
}
  }

共有1个答案

帅煌
2023-03-14

您的房间插入操作没有问题。您在应用程序中使用live date的方式似乎是错误的,这就是为什么您的程序正在运行,但没有结果。您必须检查使用实时数据的部分。希望这对你有所帮助。

 类似资料:
  • 本文向大家介绍Android 将数据插入数据库,包括了Android 将数据插入数据库的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我在我的几个应用程序中使用Logback将错误记录到数据库中。现在在我最新的应用程序中,我创建了一个正常使用的日志。但现在应用程序不会将任何内容记录到数据库中。 我正在使用源代码将db appender添加到记录器。代码如下所示: 当我尝试应用程序使用logback.xml文件相同的行为。没有日志写入数据库。有人能帮我吗?

  • 问题内容: 从Actor中读取的文件:Zac Efron 传记:他出生于加利福尼亚州的圣路易斯·奥比斯波,并在阿罗约·格兰德附近长大。在几集《夏姆兰》(2004)的客串中,他以女孩疯狂的卡梅隆·贝尔的身份参加常规演出。埃夫隆还出演过许多飞行员,例如卡尔·兰克(Carl Laemke)的《大世界》(2003)(电视)和三重播放(2004)(TV)。 More_Bio:Efron于2006年6月毕业于

  • 利用INSERT语句将数据插入表中 数据插入 用来插入(添加)行到数据库。 插入完整的行 插入行的一部分 插入某些查询结果 插入完整的行 指定表名和被插入到新行中的值 编写依赖与特定列次序的SQL语句,这样做有时会出错,但编写方便。 mysql> INSERT INTO Customers -> VALUES('1000000006', -> 'Toy Land', ->

  • 我的PHP代码中的插入数据sql命令不工作。有人能帮帮忙吗? 我有一个注册表,它从输入字段(姓名、姓氏、电子邮件、用户名和密码)中获取值 用户在此字段中输入的值应保存到我的表“users”中,该表有以下列(ID[主键/INT]、name[文本]、lastname[文本]、e-mail[变量字符]、username[变量字符]和password[变量字符])。 这是我目前的代码:

  • 我想我在这段代码中遇到了一点问题:当我试图在数据库中插入值时,我遇到了一个错误。