我的应用程序代码中的 android ROOM 中的 Doa 有什么问题导致应用程序崩溃?

问题描述

我是 android 新手,想将 Room 用于我的数据库,但有一个错误在网上搜索了很多次后我无法解决

Goods.java

package ir.mhn.nhamrahtop.db;

import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity (tableName = "goodstbl")
public class Goods {

    @PrimaryKey
    @NonNull
  public String goodsId;

}

GoodsDao.java

package ir.mhn.nhamrahtop.db;

import androidx.room.Dao;
import androidx.room.Insert;

@Dao
public interface GoodsDao {
    @Insert
   public   void insert(Goods goods);
}

TopDatabase.java

package ir.mhn.nhamrahtop.db;


import androidx.room.Database;
import androidx.room.RoomDatabase;

@Database(entities = {Goods.class},version = 1)

public abstract class TopDatabase extends RoomDatabase {
    public abstract GoodsDao goodsDao();
}

MainActivity.java

package ir.mhn.nhamrahtop;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import ir.mhn.nhamrahtop.db.Goods;
import ir.mhn.nhamrahtop.db.GoodsDao;
import ir.mhn.nhamrahtop.db.TopDatabase;


public class MainActivity extends AppCompatActivity {

    public static TopDatabase database;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        database=Room.databaseBuilder(getApplicationContext(),TopDatabase.class,"dbgoods")
        .allowMainThreadQueries()
        .build();
         
        Goods goods1=new Goods();
        goods1.goodsId="123";
        GoodsDao goodsDao=database.goodsDao();
        goodsDao.insert(goods1);
    }

在这里删除了一些不相关的代码块。 我的应用程序在加载 MainActivity 时崩溃,但仅删除“goodsDao.insert(goods1)”行后,一切正常。 我的代码有什么问题!? (对不起,如果我的英语很差) 提前致谢

解决方法

从此:

https://stackoverflow.com/a/64461346/15230839

我将 (onConflict = OnConflictStrategy.REPLACE) 添加到 @Insert ,问题解决了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...