问题描述
我是 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 ,问题解决了。