gpt4 book ai didi

java - 无法从房间数据库中删除表

转载 作者:行者123 更新时间:2023-11-29 18:32:57 25 4
gpt4 key购买 nike

我在我的应用程序中实现了 Room Persistence Library。使用这个我1.向表中添加数据2.显示它3.删除表我正在循环执行这三个步骤。但这里的问题是表格内容只有在重新启动应用程序后才会被删除。意味着在我重新启动应用程序之前不会删除表数据。我的代码在这里

添加、读取、显示数据库表

public void DatabaseTask{
for(getting data from web server){
//Adding them to database
AddToDatabase addToDatabase=new AddToDatabase(file.getId(),file.getName(),"punith@gmail.com");
addToDatabase.execute();
}
//Reading Table from Database
ReadFromDatabase readFromDatabase=new ReadFromDatabase();
readFromDatabase.execute();
//Deleting table from database
DeleteFromDatabase deleteFromDatabase=new DeleteFromDatabase();
deleteFromDatabase.execute();

}
This DatabaseTask class will be executed every 15 minutes

用于添加、读取、删除的异步任务类

 private class AddToDatabase extends AsyncTask<String,String,String>{
String id;
String name,email;
public AddToDatabase(String id,String name, String email){
this.id=id;
this.name=name;
this.email=email;

}
@Override
protected String doInBackground(String... strings) {
User user=new User();
user.setId(id);
user.setName(name);
user.setEmail(email);
MainActivity.myAppDatabase.myDao().addUser(user);
return null;
}

@Override
protected void onPostExecute(String s) {
Log.d("mPavan001", "add done");
super.onPostExecute(s);
}
}
private class ReadFromDatabase extends AsyncTask<String,String,String>{

@Override
protected String doInBackground(String... strings) {

List<User> users=MainActivity.myAppDatabase.myDao().getUsers();
for(User usr: users){
String id=usr.getId();
String name=usr.getName();
String email=usr.getEmail();
info=info+"\n\n"+"id :"+id+"\n Name :"+name+"\n Email :"+email;
}
return null;
}

@Override
protected void onPostExecute(String s) {
Log.d("mPavan001", "onPostExecute: "+info);
super.onPostExecute(s);
}
}
private class DeleteFromDatabase extends AsyncTask<String,String,String>{

@Override
protected String doInBackground(String... strings) {

MainActivity.myAppDatabase.myDao().deleteAll();

return null;
}

@Override
protected void onPostExecute(String s) {
Log.d("mPavan001", "delete done");
super.onPostExecute(s);
}
}

数据访问对象

@Dao
public interface MyDao {

@Insert
public void addUser(User user);

@Query("select * from users")
public List<User> getUsers();

@Query("DELETE FROM users")
public void deleteAll();
}

我该如何解决这个问题?请询问您是否需要更多详细信息。

最佳答案

看起来你只是在删除数据,而没有监听它的变化。

考虑使用 LiveData 从数据库获取数据,并在 FragmentActivity 中观察 LiveData。这样您的 View 将始终了解数据更改。

一件事是您可能在删除数据后手动检查数据更改。如果是这样:请发布该 block 的代码。

关于java - 无法从房间数据库中删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55397884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com