没有这样的表:TableName(代码1):,而编译:SELECT*FROM TableName



我正在尝试使用房间数据库删除该表,然后对我的表执行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

最新更新