java - 使用android中的房间数据库删除保存在文件夹中的照片

标签 java android

我正在使用手机中的默认相机拍照。之后将照片保存在文件夹中的特定路径中,该路径已使用 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)设计中的变化。 任何人都可以帮助我解决这个问题..已经冲浪了很多但找不到解决方案。

最佳答案

  1. 在查询中引用 argument 参数时不要忘记添加冒号:
DELETE FROM record_table WHERE photo_path = :photoPath
  1. 在从 Room 中删除链接之前将其解压缩,以编程方式创建一个 File 实例并调用该实例的“删除”方法:
File file = new File("path to your file");
file.delete();

关于java - 使用android中的房间数据库删除保存在文件夹中的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859117/

相关文章:

java - Java 中的循环倒数计时器

java字节数组内存未释放

android - 如何使用 achartengine 设置条形宽度。我的最后一个酒吧被挤掉了

android - getActionBar()、getSupportActionBar() 返回 java.nullpointer.exception

java - DefaultHTTPClient 抛出未知异常

android - 如何在 StaggeredGridView 中使用 setScrollListener

java - 如何像其他网站一样解决 YouTube API 嵌入限制?

java - Java .class 文件的 cli 反编译器

java - for-each vs for vs while

android - 将蓝牙配对对话带到前面