android - 没有这样的表: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 调用中获取值,然后将其存储在房间数据库中
public void addListOfTable(List<Table> tables) {
dao.insertIntoTable(tables);
}
public void deleteTable() {
dao.deleteTable();
}
请帮助我如何解决此问题。
我正在使用房间数据库
解决方案
我想问题是你将你的房间数据库类传递给你的数据库而不是实体本身,要解决这个问题,你需要执行以下操作
@Database(entities = {Table.class}, version = 2) /// put Table.class instead
推荐阅读
- c# - 如何在 C# 中使用 CSV 助手解析 TSV 文件?
- android - 从firebase获取值时如何检查onRadioButtonClicked值?
- selenium - 如果我有一个可以返回多个页面的页面方法,我该怎么办?我正在使用 Java 和 Selenium
- css - Tailwindcss nextjs JIT模式编译报错
- cypress - 赛普拉斯 - 如何验证 json 对象
- typescript - 来自 Api 网关的异步 lambda 调用的打字稿
- blazor-webassembly - 在 Blazor 页面中测试集合中的第一项
- c# - 使用带有 Angular 6 的 Dot Net Framwork 4.5.2 的 CORS 问题
- python - 当我们输入大文本时,如何防止标签在kivy中离开屏幕?
- quarkus - Quarkus OpenId Connect 承载令牌集成/安全测试