我正在尝试使用房间数据库删除该表,然后对我的表执行Select Query。
问题是有一次它正确地执行了查询。但另一次它抛出了以下异常
Fatal Exception: android.database.sqlite.SQLiteException: no such table: TableName (code 1): , while compiling: SELECT * FROM TableName
以下是删除表的代码
@Query("DELETE FROM TableName")
public void delete_table();
选择查询
@Query("SELECT * FROM TableName")
public LiveData<List<Table>> getAllValues();
该表的模型类
@Entity(tableName = "TableName")
public class Table {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "LID")
private int id;
@ColumnInfo(name = "LOC_NAME")
private String loc_name;
public Table(){
}
public Table(String loc_name) {
this.loc_name = loc_name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoc_name() {
return loc_name;
}
public void setLoc_name(String loc_name) {
this.loc_name = loc_name;
}
}
房间数据库类
@Database(entities = {Table.class}, version = 2)
public abstract class RoomDB extends RoomDatabase {
public static final String DATABASE_NAME = "db-name";
public abstract DataBaseDao getDatabaseDao();
private static RoomDB instance;
public static DataBaseDao getInstance(Context context){
if (instance == null){
synchronized (GoBumprRoomDB.class){
if (instance==null){
instance = Room.databaseBuilder(context, RoomDB.class, DATABASE_NAME).fallbackToDestructiveMigration().build();
}
}
}
return instance;
}
}
DAO类
@Dao
public interface DataBaseDao {
@Query("SELECT * FROM TableName")
public LiveData<List<Table>> getAllValues();
@Query("DELETE FROM TableName")
public void delete_table();
@Insert(onConflict = OnConflictStrategy.IGNORE)
public void insertIntoTable(List<Table> tableList);
}
我从Rest调用中获取值,然后将其存储在房间DB 中
public void addListOfTable(List<Table> tables) {
dao.insertIntoTable(tables);
}
public void deleteTable() {
dao.deleteTable();
}
请帮我解决这个问题。
我正在使用房间数据库
我想问题是您将房间数据库类传递到数据库,而不是实体本身,要解决这个问题,您需要执行以下
@Database(entities = {Table.class}, version = 2) /// put Table.class instead