我正在使用手机中的默认相机拍照。之后将照片保存在文件夹中的特定路径中,该路径已使用 File 类创建。在 Room 数据库中,我只存储了图像的路径。现在,我添加了删除方法来删除特定照片。我正在使用以下查询来删除,
@Query("DELETE FROM record_table WHERE photo_path = photoPath")
int deletePhotoPath(String photoPath);
以下方法用于删除照片(DataRepository.class)
public void deletePhotoPath(String photoPath){
new deletePhotoPathAsyncTask(RecordDao).execute(photoPath);
}
private class deletePhotoPathAsyncTask extends AsyncTask<String,Void,Void>{
public deletePhotoPathAsyncTask(RecordDao dao) {
RecordDao=dao;
}
@Override
protected Void doInBackground(final String... strings) {
int photoPathDeleted=RecordDao.deletePhotoPath(strings[0]);
Log.d("deletePhotoPath"," Photo Path"+photoPathDeleted+strings[0]);
return null;
}
}
我调用删除方法如下(MyActivity.class),
HolderData.deletePhotoPath(photopathArrayList.get(positionOfCurrentViewPhoto));
在 HolderData 类中,我有以下方法可以从数据库 (HolderData.class) 中调用删除方法,
public static void deletePhotoPath(String photoPath){
Log.d(LOG_TAG, "deletPhotoPath:"+photoPath);
dataRepository.deletePhotoPath(photoPath);
}
但是我的照片没有被删除。 delete 方法中的 Logcats 工作正常。 不知道删除照片。以及我如何反射(reflect)设计中的变化。 任何人都可以帮助我解决这个问题..已经冲浪了很多但找不到解决方案。
最佳答案
- 在查询中引用 argument 参数时不要忘记添加冒号:
DELETE FROM record_table WHERE photo_path = :photoPath
- 在从 Room 中删除链接之前将其解压缩,以编程方式创建一个 File 实例并调用该实例的“删除”方法:
File file = new File("path to your file");
file.delete();
关于java - 使用android中的房间数据库删除保存在文件夹中的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859117/