[英]Android Room: SQL error or missing database
我使用 Room 庫創建了一個數據庫,但我無法構建我的應用程序:
Task.java:8: error: [SQLITE_ERROR] SQL error or missing database (near "t": syntax error)
public class Task {
^
這是我的Task
調用:
@Entity(tableName = "task")
public class Task {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private long mId;
@ColumnInfo(
name = "name",
defaultValue = "Unknown Title"
)
private String mName;
@ColumnInfo(
name = "description",
defaultValue = "Doesn't have any description!"
)
private String mDescription;
@ColumnInfo(
name = "isDone",
defaultValue = "false"
)
private boolean mIsDone;
public String getName() {
return mName;
}
public void setName(String name) {
if (name.length() > 0) mName = name;
}
public String getDescription() {
return mDescription;
}
public void setDescription(String description) {
if (description.length() > 0) mDescription = description;
}
public boolean isDone() {
return mIsDone;
}
public void setIsDone(boolean isDone) {
mIsDone = isDone;
}
public void changeIsDoneState() {
mIsDone = !mIsDone;
}
public long getId() {
return mId;
}
public void setId(long id) {
this.mId = id;
}
}
還有我的RoomDatabase
:
@Database(entities = {Task.class}, version = 1)
public abstract class MainDB extends RoomDatabase {
public abstract TackDao tackDao();
private static volatile MainDB INSTANCE;
public static MainDB getInstance(Context c) {
if (INSTANCE == null) {
synchronized (MainDB.class) {
if (INSTANCE == null) INSTANCE = Room.databaseBuilder(
c.getApplicationContext(), MainDB.class, "main"
).allowMainThreadQueries().build();
}
}
return INSTANCE;
}
}
還有我的Dao
:
@Dao
public interface TackDao {
@Query("SELECT * FROM task")
LiveData<List<Task>> getAllTasks();
@Insert
long insert(Task task);
@Update
int update(Task... tasks);
@Delete
int delete(Task... tasks);
}
好像你使用有問題:
defaultValue = "Doesn't have any description!"
Doesn't
中的撇號導致了這個問題
將其更改為:
@ColumnInfo(
name = "description",
defaultValue = "Does not have any description!"
)
確實有效。 不知道你會如何正確地逃避這個撇號值,甚至可能是不可能的,我嘗試做的是:
@ColumnInfo(
name = "description",
defaultValue = "Doesn''t have any description!"
)
這似乎工作正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.