I'm new on android and want to use Room for my database, but there is one error I couldn't solve after many search on the web.
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);
}
I deleted some unrelated code block here. my app crash on load MainActivity, but after delete only "goodsDao.insert(goods1)" line, everything is good. what's wrong with my code!? (sorry if my english is poor) thanks in advance