Android 房间插入不写入数据库
Android Room insert doesn't write to DB
插入数据后,在Android Studio 的Database Inspector 中检查数据。但是数据不在数据库中。另外,完全没有错误。
Table 和 table 列看起来没问题,但 table 甚至刷新时没有数据。
我想把它写到数据库中。如何进一步调试?
在 Fragment onCreateView,
View rview = inflater.inflate(R.layout.fragment_db, container, false);
context = rview.getContext();
vanDB = VanDB.getInstance(context);
String sDate = "21/8/2022";
Date a_date = null;
try {
a_date = new SimpleDateFormat("dd/MM/yyyy").parse(sDate);
} catch (ParseException e) {
e.printStackTrace();
}
Van a_van = new Van("123", a_date, false);
vanDB.vanDao().insertVan(a_van);
VanDB
@Database(entities = {Van.class}, version = 1, exportSchema = false)
public abstract class VanDB extends RoomDatabase {
public abstract VanDao vanDao();
public static VanDB van_db;
public static VanDB getInstance(Context context) {
if (null == van_db) {
van_db = buildDatabaseInstance(context);
}
return van_db;
}
private static VanDB buildDatabaseInstance(Context context) {
return Room.databaseBuilder(context, VanDB.class, "vans.db").allowMainThreadQueries().build();
}
public void cleanUp(){
van_db = null;
}
}
面包车
@Entity(indices = {@Index(value = {"serial"}, unique = true)}, tableName = 'van')
public class Van {
@PrimaryKey(autoGenerate = false)
@NonNull
private String serial;
@NonNull
private Date expiry_date;
private boolean validity;
public Van(@NonNull String serial, @NonNull Date expiry_date, boolean validity) {
this.serial = serial;
this.expiry_date = expiry_date;
this.validity = validity;
}
// getter and setter...
范道
@Dao
public interface VanDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
Completable insertVan(Van van);
@Update(onConflict = OnConflictStrategy.REPLACE)
Completable updateVan(Van van);
}
愚蠢的问题 - 你的 Van
class 有一个 public 构造函数用于 Vest
class 但它没有显示错误?
另外,请根据 Completable
使用 RxJava,而不是 void
?
插入数据后,在Android Studio 的Database Inspector 中检查数据。但是数据不在数据库中。另外,完全没有错误。
Table 和 table 列看起来没问题,但 table 甚至刷新时没有数据。
我想把它写到数据库中。如何进一步调试?
在 Fragment onCreateView,
View rview = inflater.inflate(R.layout.fragment_db, container, false);
context = rview.getContext();
vanDB = VanDB.getInstance(context);
String sDate = "21/8/2022";
Date a_date = null;
try {
a_date = new SimpleDateFormat("dd/MM/yyyy").parse(sDate);
} catch (ParseException e) {
e.printStackTrace();
}
Van a_van = new Van("123", a_date, false);
vanDB.vanDao().insertVan(a_van);
VanDB
@Database(entities = {Van.class}, version = 1, exportSchema = false)
public abstract class VanDB extends RoomDatabase {
public abstract VanDao vanDao();
public static VanDB van_db;
public static VanDB getInstance(Context context) {
if (null == van_db) {
van_db = buildDatabaseInstance(context);
}
return van_db;
}
private static VanDB buildDatabaseInstance(Context context) {
return Room.databaseBuilder(context, VanDB.class, "vans.db").allowMainThreadQueries().build();
}
public void cleanUp(){
van_db = null;
}
}
面包车
@Entity(indices = {@Index(value = {"serial"}, unique = true)}, tableName = 'van')
public class Van {
@PrimaryKey(autoGenerate = false)
@NonNull
private String serial;
@NonNull
private Date expiry_date;
private boolean validity;
public Van(@NonNull String serial, @NonNull Date expiry_date, boolean validity) {
this.serial = serial;
this.expiry_date = expiry_date;
this.validity = validity;
}
// getter and setter...
范道
@Dao
public interface VanDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
Completable insertVan(Van van);
@Update(onConflict = OnConflictStrategy.REPLACE)
Completable updateVan(Van van);
}
愚蠢的问题 - 你的 Van
class 有一个 public 构造函数用于 Vest
class 但它没有显示错误?
另外,请根据 Completable
使用 RxJava,而不是 void
?