我正在尝试从我创建的会议室数据库中删除一行。
奇怪的是,只有我第一次执行命令时才会删除该行:
App.get().getDB().productDao().delete(myArrayList.get(clickedItemIndex));
第一次尝试再次删除该行后,一切正常并删除。
我删除行的活动:
private class DeletePelati extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//Perform pre-adding operation here.
}
@Override
protected Void doInBackground(Void... voids) {
App.get().getDB().productDao().delete(myArrayList.get(clickedItemIndex));
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//To after addition operation here.
setResult(pelatis,3);
finish();
}
}
然后,当我重新启动我的应用程序时,删除查询将正常执行。
这是我的App扩展了Aplication:
public class App extends Application {
public static App INSTANCE;
private static final String DATABASE_NAME = "MyDatabase";
private static final String PREFERENCES = "RoomDemo.preferences";
private static final String KEY_FORCE_UPDATE = "force_update";
private MyDatabase database;
public static App get() {
return INSTANCE;
}
@Override
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
// create database
database = Room.databaseBuilder(getApplicationContext(),MyDatabase.class,DATABASE_NAME)
.build();
INSTANCE = this;
}
public MyDatabase getDB() {
return database;
}
public boolean isForceUpdate() {
return getSP().getBoolean(KEY_FORCE_UPDATE, true);
}
public void setForceUpdate(boolean force) {
SharedPreferences.Editor edit = getSP().edit();
edit.putBoolean(KEY_FORCE_UPDATE, force);
edit.apply();
}
private SharedPreferences getSP() {
return getSharedPreferences(PREFERENCES, MODE_PRIVATE);
}
public void cleanUp(){
database = null;
}
}
这是我的DAO课程:
@Dao
public interface PelatesDao {
@Query("SELECT * FROM Pelates")
List<Pelates> getAll();
@Query("SELECT * FROM Pelates WHERE name LIKE :name LIMIT 1")
Pelates findByName(String name);
@Insert
void insertAll(List<Pelates> pelates);
@Insert
void insert(Pelates pelates);
@Update
void update(Pelates pelates);
@Delete
void delete(Pelates pelates);
}
答案 0 :(得分:0)
而不是使用@Delete来使用:
react-native run-android
在上面的示例中,Test是表名,@Query("DELETE FROM Test WHERE id=:arg0")
fun deleteById(position: Int)
是WHERE子句
在传递的函数参数中是where子句字段的值。
邮编上面的例子是科特林语言。