【发布时间】:2022-01-21 23:57:58
【问题描述】:
我正在尝试使用带有 android java 的 Room 数据库库执行非常基本的插入和选择 * 操作。但是当我按下按钮执行查询时,我的应用程序会崩溃,而不会在 logcat 中显示任何错误。
仅当我重新安装应用程序并再次按下插入或选择 * 按钮应用程序崩溃时才会插入数据库行。我是这个库的新手,请指导我正确的代码。
@Entity
public class Users {
@PrimaryKey
public int id;
@ColumnInfo(name = "username")
public String uname;
@ColumnInfo(name = "lastname")
public String lname;
public Users(String uname, String lname) {
this.uname = uname;
this.lname = lname;
}
}
@Dao
@Dao
public interface UsersDao{
@Query("select * from Users")
List<Users>getUsers();
@Insert
void insertUser(Users user);
}
@Database
@Database(entities = {Users.class},version = 1)
public abstract class UsersDatabase extends RoomDatabase {
public abstract UsersDao usersDao();
}
调用方法 onCreate()
UsersDatabase db= Room.databaseBuilder(Practice.this,UsersDatabase.class,
"Users").build();
UsersDao dao=db.usersDao();
insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
dao.insertUser(new Users("George","Pal"));
}
}).start();
}
});
ArrayList<String> data=new ArrayList<>();
select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
List<Users> users=dao.getUsers();
for(Users u: users)
data.add(u.uname+", "+u.lname);
ArrayAdapter<String > adapter=new ArrayAdapter<>(Practice.this, android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
}
}).start();
}
});
依赖关系
def roomVersion = "2.4.0"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")
我的配置
- 真机api 30
- 北极狐
【问题讨论】:
标签: sqlite android-room