这是我的数据库。
@Database(entities = {Word.class}, version = 1, exportSchema = false)
public abstract class WordsDatabase extends RoomDatabase {
private static final String DB_NAME = "words";
private static WordsDatabase database;
private static final Object LOCK = new Object();
public static WordsDatabase getInstance(Context context) {
synchronized (LOCK){
if(database == null) {
database = Room.databaseBuilder(context,WordsDatabase.class, DB_NAME)
.createFromAsset("words.db")
.allowMainThreadQueries()
.build();
Log.i("1111", "database was created now");
} else {
Log.i("1111", "was already created");
}}
return database;
}
public abstract WordsDao wordsDao();
这是我的道
@Dao
public interface WordsDao {
@Query("SELECT * FROM pronouns")
List<Word> getAllWords();
@Query("SELECT * FROM pronouns WHERE wordRus == :wordRus")
Word getWordByWord(String wordRus);
这是我的实体
@Entity(tableName = "pronouns")
public class Word {
@PrimaryKey
private int position;
private String wordRus;
private String wordHin;
private String wordDev;
private int progress;
1 constructor with all fields, getters, setters...
这是我的 onCreate()
database = WordsDatabase.getInstance(this);
Word word = database.wordsDao().getWordByWord("я");
Log.i("1111", word.getWordRus());
这是我的日志
I/1111: database was created now
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String com.vazheninapps.hindipoliglot.data.Word.getWordRus()' on a
null object reference
这是我在资产(SQL2 数据库)中的 words.db SQLSTUDIOIMAGE
我做错了什么?为什么数据库为空?我也尝试方法 getAllWords()。并返回列表的大小。它是 0。