Пытаюсь получить доступ к уже существующей bd через Room, но при выполнении кода просходит ошибка
Attempt to invoke virtual method 'java.lang.String com.example.kmatrosov001.game.daotest.User.getFirst_name()' on a null object reference
База данных не пуста, таблица существует и все элементы в ней есть (пробовал на нескольких БД, распологается в папке assets). В целом, пример полностью идентичен примеру гугла https://developer.android.com/topic/libraries/architecture/room.html ,только он, получается, ругается на пустую дб, но в ней есть все необходимые записи. Также пытался запускать из-под метода onCreate.
Settings.java
public class Settings extends AppCompatActivity implements View.OnClickListener { Button button; AppDatabase db; @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.settings); button = findViewById(R.id.sMenu); button.setOnClickListener(this); db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "testdb.db").allowMainThreadQueries().build(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.sMenu: Toast.makeText(this, db.userDao().findByName("My", "Name").getFirst_name(), Toast.LENGTH_LONG).show(); break; } } }
User.java
@Entity public class User { @PrimaryKey private int uid; @ColumnInfo(name = "first_name") private String first_name; @ColumnInfo(name = "last_name") private String lastName; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getFirst_name() { return first_name; } public void setFirst_name(String first_name) { this.first_name = first_name; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
UserDao.java
@Dao public interface UserDao { @Query("SELECT * FROM user") List<User> getAll(); @Query("SELECT * FROM user WHERE uid IN (:userIds)") List<User> loadAllByIds(int[] userIds); @Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1") User findByName(String first, String last); @Insert void insertAll(User... users); @Delete void delete(User user); }