Sim*_*mon 5 database sqlite android android-sqlite android-external-storage
我有一个奇怪的问题,当我卸载应用程序时,我的SQL数据库不会自行删除
我不是在任何外部存储目录中创建数据库,并且确认数据库位于其默认位置: /data/data/com.example.app/databases/
卸载应用程序后,我希望擦除该位置的所有数据,但是当我从android studio再次运行应用程序时,新安装仍然可以看到所有旧数据
我已经尝试使用adb手动删除.db数据库目录中的文件,但是当我再次运行应用程序时,仍然可以看到旧数据
我也尝试进入应用程序设置并清除数据和缓存,但这似乎没有帮助
在我的代码中,我对数据库做任何"奇怪"事情的唯一地方是我在按钮点击时将数据库文件复制到新位置:
String pathToExternalStorage = Environment.getExternalStorageDirectory().toString();
File exportDir = new File(pathToExternalStorage, "/SensorData");
File subjectDataDir = new File(exportDir, "/subjects");
File data = Environment.getDataDirectory();
String currentDBPath = "//data//com.example.app//databases//" + DBHelper.DATABASE_NAME;
File currentDB = new File(data, currentDBPath);
File destDB = new File(exportDir, DBHelper.DATABASE_NAME);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(destDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Run Code Online (Sandbox Code Playgroud)
然后在新创建的文件上运行mediascanner,以便我可以立即获得MTP访问权限
我怀疑这些过程中的任何一个都可能导致这种情况发生吗?
我当前的问题是如何在没有root访问权限的情况下从手机中手动删除数据库?
更大的问题是什么可能导致卸载过程不删除数据库文件?新安装的应用程序版本(卸载后)如何仍然可以看到旧的数据库信息?
我不知道如何开始搞清楚这一点......
编辑:
这变得越来越陌生.这似乎只发生在Windows上.这是我尝试过的过程:
所以我现在真的很茫然.为什么在Mac上运行会好吗?为什么在Mac上运行并清理数据库后,再次带上旧的Windows数据库呢?这不是所有操作系统都独立吗?
您可以修改删除表(如果存在)的查询,如下所示:
DROP TABLE table_name IF EXISTS;
Run Code Online (Sandbox Code Playgroud)
进而
CREATE TABLE table_name IF NOT EXISTS
Run Code Online (Sandbox Code Playgroud)
另外,如果您想从模拟器或设备中手动删除 .db 文件,请转到“工具”->“Android”->“Android 设备监视器”:
然后找到文件资源管理器:
然后删除您的 .db 文件。
希望能帮助到你!!!
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |