【发布时间】:2021-02-17 22:15:51
【问题描述】:
我是 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)”行后,一切都很好。 我的代码有什么问题!? (对不起,如果我的英语很差) 提前致谢
【问题讨论】:
-
请发布实际的错误/崩溃消息。
-
另一个值得注意的点是最好在后台线程而不是主 UI 线程上进行房间查询
-
@Greeshma 我知道也听过很多次,但无法简明扼要地理解它的原因!
标签: android android-room dao